(Gast)
n/a Beiträge
|
AW: Firemonkey FillEllipse Problem
9. Apr 2014, 12:28
Gleich vorweg: Ich hab nur 2009 und daher keinen blassen Schimmer von Firemonkey. Doch vielleicht hilft dir meine alte Elipsen-Methode weiter: - Blatt gibt die Zeichenfläche an,
- XM und YM den Mittelpunkt,
- A und B den X- und den Y-Radius,
- Phi die Drehung um den Mittelpunkt,
- Pkte die Anzahl der Punkte. 5 Punkte ergibt ein Fünfeck, je mehr Punkte, desto runder wirkt die Elipse.
Delphi-Quellcode:
Procedure Elipse(Blatt: TCanvas; XM,YM,A,B,Phi : REAL; Pkte : BYTE);
Var
SinPhi, CosPhi,
SinT, CosT : REAL;
X,Y : REAL;
t : REAL;
Schritt : REAL;
MerkX, MerkY : REAL;
Begin
CosPhi := COS(Phi);
SinPhi := SIN(Phi);
t := 0; Schritt := 2 * PI / Pkte;
SinT := SIN(T); CosT := COS(t);
MerkX := (A * CosT) * CosPhi + (B * SinT) * SinPhi;
MerkY := -(A * CosT) * SinPhi + (B * SinT) * CosPhi;
Repeat
SinT := SIN(T); CosT := COS(t);
X := (A * CosT) * CosPhi + (B * SinT) * SinPhi;
Y := -(A * CosT) * SinPhi + (B * SinT) * CosPhi;
Blatt.Line(TRUNC(MerkX) + TRUNC(XM), TRUNC(MerkY) + TRUNC(YM),
TRUNC(X) + TRUNC(XM), TRUNC(Y) + TRUNC(YM));
MerkX := X; MerkY := Y;
t := t + Schritt;
Until t > (2 * PI) + Schritt;
End;
|
|
Zitat
|