Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Stern zeichnen

  Alt 28. Okt 2011, 18:22
Mit einer aufgeräumten Funktion sieht man mehr!
Folgender Abschnitt entspricht deinen Quellcode, aber ist etwas sauberer und passt sich automatisch der Größe der Image-Komponente an und spart eine Schleife.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  i,
  r2,
  xm,
  ym,
  x,
  y,
  zacken,
  anzahlP : Integer;
  winkelschritt,
  winkel : double;
begin
  xm:= img1.Width div 2; // Mittelpunkt auf Imagefeld
  ym:= img1.Height div 2;

  if (se1.Value >= 3) then
  begin
    zacken := se1.Value // Anzahl Zacken wird aus Spinedit gelesen
  end
  else
  begin
    zacken := 3;
  end;

  anzahlP := 2 * Zacken; // Anzahl Punkte ist zweimal Zacken

  r2 := ym div 2; // Innenradius von 70 Pixeln

  winkelschritt:= 2 * Pi / anzahlP; // Winkelschritt abhängig von Zacken

  img1.canvas.pen.color:= clred;
  img1.canvas.Ellipse(img1.BoundsRect);

  img1.canvas.moveto (xm + r2, ym); // Bewege dich auf Startpunkt des N-Ecks

  for i:= 0 to anzahlP do // N-Eck zeichnen mit Radius 70
  begin
    winkel := winkelschritt * i;
    x:= round( xm + r2 * cos(winkel) );
    y:= round( ym + r2 * sin(winkel) );
    img1.canvas.pen.color:= clgreen;
    img1.canvas.lineto(x,y);
  end;
end;
  Mit Zitat antworten Zitat