如何在Firemonkey中创建径向渐变

rho*_*ody 5 delphi firemonkey

我有一个FireMonkey表单,在表单的OnPaint事件上有以下代码.我期待一个带有径向渐变的球,但我只得到一个红色的球,没有渐变.问题是我做错了什么.在XE3上运行它.如果我将渐变样式更改为gsLinear,我会得到一个线性渐变.我还需要指定其他东西才能显示径向渐变吗?

 procedure TForm2.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
 var MyRect : TRectF;
 begin
   MyRect.Create (85, 85, 115, 115);

   Canvas.Fill.Gradient.Style := TGradientStyle.gsRadial;
   Canvas.Fill.Gradient.Color := claRed;
   Canvas.Fill.Gradient.Color1 := claBlue;
   Canvas.Fill.Kind := TBrushKind.bkGradient;
   Canvas.FillEllipse (MyRect, 100);
 end;
Run Code Online (Sandbox Code Playgroud)

rho*_*ody 3

FireMonkey 中似乎存在错误。如果在 0,0 处绘制椭圆,则可以看到径向渐变。当椭圆在其他地方绘制时,渐变原点不会移动,而是保持在原点(尽管现在不可见)。截至今天,该错误显然已被报告,何时修复则是另一回事。解决方法是修补 FMX 源代码(但我没有补丁)或使用 TEllipse 组件。