Многоточечные градиенты FMX - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь применить многоточечный градиент к 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;

1 Ответ

0 голосов
/ 30 ноября 2018

Похоже, что это ошибка в реализации GPU Canvas в Delphi 10.3, если я закомментирую "FMX.Types.GlobalUseGPUCanvas: = True;"работает как задумано.

...