如何在Firemonkey中创建径向渐变

时间:2012-09-28 07:18:43

标签: 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;

1 个答案:

答案 0 :(得分:3)

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