Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Firemonkey FillEllipse Problem

  Alt 9. Apr 2014, 11: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;
  Mit Zitat antworten Zitat