Einzelnen Beitrag anzeigen

Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Ellipsen die sich um ihren Mittelpunkt drehen mit Delphi

  Alt 28. Feb 2005, 20:30
Nicht schlecht, das hätt ich vor einigen Monaten gebrauchen können. Eine Sache fehlt jedoch oder ich hab's bei dir übersehen und zwar: ARC's bzw Teilellipsen.

Hab mich damals auch damit beschäftigt und habe schließlich diese Procedure geschrieben:

Delphi-Quellcode:
Procedure DrawEllipse(Dest: TCanvas; xCenter, yCenter, // Mittelpunkt
                                     xRadius, yRadius: Single; // breite, höhe
                                     sAngle: Single = 0; // StartWinkel
                                     eAngle: Single = 360; // EndWinkel
                                     RotateAngle: Single = 0; // DrehWinkel
                                     Points: Byte = 50); // Anzahl der Punkte
Var
  rAngle, step: Single;
  x1, y1: Integer;

  Procedure GetPos(Angle: Single; Out x1, y1: Integer);
  Var x, y, Theta: Single;
  Begin
    Theta:=Angle*(PI/180);
    x:=xRadius*cos(-Theta);
    y:=yRadius*sin(-Theta);
    x1:=Round(xCenter+x*Cos(-rAngle)-y*Sin(-rAngle));
    y1:=Round(yCenter+x*Sin(-rAngle)+y*Cos(-rAngle));
  End;

begin
  rAngle:=RotateAngle*(PI/180);
  step:=(eAngle-sAngle)/Points;
  GetPos(sAngle,x1,y1);
  Dest.MoveTo(x1,y1);
  sAngle:=sAngle+step;
  While sAngle<eAngle Do Begin
    GetPos(sAngle,x1,y1);
    Dest.LineTo(x1,y1);
    sAngle:=sAngle+step;
  End;
  GetPos(eAngle,x1,y1);
  Dest.LineTo(x1,y1);
End;
  Mit Zitat antworten Zitat