2012-09-28 25 views
5

Mam formularz FireMonkey z następującym kodem w zdarzeniu OnPaint w formularzu. Spodziewałem się piłki z radialnym gradientem, ale dostaję tylko czerwoną piłkę, bez nachylenia. Pytanie, co robię źle. Uruchomienie go na XE3. Jeśli zmienię styl gradientu na gsLinear, otrzymam gradient liniowy. Czy jest coś jeszcze, co muszę określić, aby wyświetlić radialne nachylenie?Tworzenie gradientu radialnego w 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; 

Odpowiedz

3

Wygląda na to, że w FireMonkey występuje błąd. Jeśli narysujesz elipsę o 0,0, widoczny będzie gradient radialny. Kiedy elipsa zostanie narysowana w innym miejscu, pochodzenie gradientu nie zostanie przesunięte, ale pozostanie na początku (choć teraz jest niewidoczne). Błąd został najwyraźniej odnotowany od dzisiaj, kiedy to zostanie naprawiony to inna sprawa. Na odwrót należy albo załączyć kod źródłowy FMX (ale nie mam łatki), albo użyć komponentu TEllipse.