2012-09-28 33 views
5

Tengo un formulario FireMonkey con el siguiente código en el evento OnPaint del formulario. Esperaba una bola con un degradado radial, pero solo recibí una bola roja, sin gradiente. La pregunta es qué estoy haciendo mal. Ejecándolo en XE3. Si cambio el estilo del degradado a gsLinear, obtengo un degradado lineal. ¿Hay algo más que deba especificar para mostrar el degradado radial?Cómo crear el degradado radial en 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; 

Respuesta

3

Parece haber un error en FireMonkey. Si dibuja la elipse en 0,0, el degradado radial es visible. Cuando la elipse se dibuja en otro lugar, el origen del degradado no se mueve sino que permanece en el origen (aunque ahora es invisible). El error aparentemente ha sido reportado a partir de hoy, cuando será arreglado es otro asunto. El camino a seguir es parchear el código fuente de FMX (pero no tengo el parche) o usar el componente TEllipse.