2012-09-28 5 views
5

Ich habe ein FireMonkey-Formular mit dem folgenden Code für das OnPaint-Ereignis des Formulars. Ich erwartete einen Ball mit einem radialen Gradienten, aber ich bekomme nur einen roten Ball, keine Steigung. Frage ist was mache ich falsch. Es auf XE3 ausführen. Wenn ich den Gradientenstil zu gsLinear ändere, bekomme ich einen linearen Gradienten. Gibt es noch etwas, das ich angeben muss, damit der radiale Verlauf angezeigt wird?So erstellen Sie den radialen Farbverlauf in 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; 

Antwort

3

Es scheint einen Fehler in FireMonkey zu geben. Wenn Sie die Ellipse bei 0,0 zeichnen, ist der radiale Verlauf sichtbar. Wenn die Ellipse anderswo gezeichnet wird, wird der Ursprung des Farbverlaufs nicht verschoben, sondern verbleibt im Ursprung (obwohl jetzt unsichtbar). Der Fehler wurde anscheinend als von heute berichtet, wenn es behoben wird, ist eine andere Sache. Der Weg dahin ist, entweder den FMX-Quellcode zu patchen (aber ich habe den Patch nicht) oder die TEllipse-Komponente zu verwenden.

Verwandte Themen