FMX多点渐变

时间:2018-11-30 17:05:00

标签: delphi gradient firemonkey

我试图将多点渐变应用于TRectangle。 如果我只是设置一个两点渐变,那么一切都很好,但是使用相同的TRectangle并尝试应用5个点,我只会看到部分渐变。

如果我使用Delphi IDE设置多点渐变效果很好(在表单预览中),问题是我该如何在代码中进行操作,而我在搜索中找不到任何示例代码。 / p>

这是我正在尝试的代码:

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;

1 个答案:

答案 0 :(得分:1)

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