2012-09-28 14 views
5

我在窗體的OnPaint事件上使用了以下代碼的FireMonkey窗體。我期待着一個有徑向漸變的球,但我只會得到一個紅色的球,沒有漸變。問題是我做錯了什麼。在XE3上運行它。如果我將漸變樣式更改爲gsLinear,我會得到線性漸變。還有什麼我不得不指定的徑向漸變顯示?如何在Firemonkey中創建徑向漸變

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; 

回答

3

FireMonkey似乎存在一個錯誤。如果您在0,0處繪製橢圓,則可以看到徑向漸變。當橢圓在其他地方繪製時,漸變原點不會移動,而會停留在原點(儘管現在不可見)。從今天起,這個錯誤顯然已經被報道,當時它將被修復是另一回事。其方法是修補FMX源代碼(但我沒有修補程序)或使用TEllipse組件。