FMX 多点渐变

FMX Multi point gradients

我正在尝试将多点渐变应用于 TRectangle。 如果我只设置一个两点渐变一切正常,但使用相同的 TRectangle 并尝试应用 5 点我只看到部分渐变。

如果我使用 Delphi IDE 设置多点渐变,它工作得很好(在表单预览中),问题是我如何在代码中做到这一点,我不能'在我的搜索中找不到任何示例代码。

这是我正在尝试的代码:

BlockBG                                 := TRectangle.Create(MainForm);
BlockBG.Parent                          := MainForm;
BlockBG.Fill.Kind                       := TBrushKind.Gradient;
BlockBG.SetBounds(0,0,clientWidth,clientHeight);

While BlockBG.Fill.Gradient.Points.Count < 5 do BlockBG.Fill.Gradient.Points.Add;

BlockBG.Fill.Gradient.Points[0].Color := $FF535b5e;
BlockBG.Fill.Gradient.Points[1].Color := $FFfefefe;
BlockBG.Fill.Gradient.Points[2].Color := $FF4a5154;
BlockBG.Fill.Gradient.Points[3].Color := $FFfdfdfd;
BlockBG.Fill.Gradient.Points[4].Color := $FF535b5e;
BlockBG.Fill.Gradient.Points[0].Offset := 0.0;
BlockBG.Fill.Gradient.Points[1].Offset := 0.25;
BlockBG.Fill.Gradient.Points[2].Offset := 0.5;
BlockBG.Fill.Gradient.Points[3].Offset := 0.75;
BlockBG.Fill.Gradient.Points[4].Offset := 1;

BlockBG.Repaint;

这似乎是 Delphi 10.3 中 GPU Canvas 实现中的一个错误,如果我注释掉 "FMX.Types.GlobalUseGPUCanvas := True;" 它会按预期工作。