5

我在表单的 OnPaint 事件上有一个带有以下代码的 FireMonkey 表单。我期待一个带有径向渐变的球,但我只得到一个红球,没有渐变。问题是我做错了什么。在 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;
4

1 回答 1

3

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

于 2012-09-28T09:09:00.040 回答