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 に答える