如何在Firemonkey中创建径向渐变

5

我有一个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个回答

3

看来FireMonkey中存在一个错误。如果你在0,0处绘制椭圆,径向渐变是可见的。当在其他位置绘制椭圆时,渐变起源没有移动,而是停留在原点(尽管现在是不可见的)。据说这个错误已经在今天报告了,修复时间还有待确定。解决方法是要么修补FMX源代码(但我没有补丁),要么使用TEllipse组件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接