Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Stern Programmieren und zeichnen (https://www.delphipraxis.net/175388-stern-programmieren-und-zeichnen.html)

becks2013 18. Jun 2013 11:47


Stern Programmieren und zeichnen
 
Hallo ich hoffe ich bin richtig hier mit meiner Frage.
Also ich benötige zur Klausurvorbereitung ein Programm. Ich möchte einen Stern zeichnen.

Ich bin jetzt nicht so der Crack ;-). Akutell sieht das ganze so aus: Imagefeld, 1 Button, 3 Editfelder.
Ich benutze das Programm Lararus.
Aber es bleibt immer so eine unschöne Ecke stehen

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
   var                                     // lokale Variablen
      x,y,xm,ym,xmm,ymm,ir,ar,index,vz,anzahl:integer;
     winkel,winkelschritt:double;

   begin
   anzahl:=strtoint(edit1.text);              // Anzahl aus Edit 1
   xm:=image1.Width;                       // X-Wert aus Edit2
   ym:=image1.height;                       // Y-Wert aus Edit 3
   xmm:= xm div 2;
   ymm:= ym div 2;
   ir :=strtoint(edit4.text);                  // Innenradius aus Edit 4
   ar :=strtoint(edit6.text);                  // Außenradius aus Edit 6
   image1.canvas.pen.color:=clblack;         // Stiftfarbe
   image1.canvas.fillrect(0,0,xm,ym);
   x:=ar+xmm; y:=ymm;                            // Anfangspunkt
   vz:=-1;
   image1.canvas.MoveTo(x,y);                 // mit gehobenem Stift anfahren
   winkelschritt:=(2*Pi)/anzahl;          // Winkelschritt berechnen
   for index:=1 to anzahl do
      begin
      winkel:=winkelschritt*(index-1)+winkelschritt/2;         // Winkel ab 0°
      x:=round(ar*cos(winkel))+xmm;          // x- Koordinate
      y:=round(vz*ar*sin(winkel))+ymm;          // y- Koordinate
      image1.canvas.lineto(x,y);           // Zeichnen
      winkel:=winkelschritt*index;
      x:=round(ir*cos(winkel))+xmm;          // x- Koordinate
      y:=round(vz*ir*sin(winkel))+ymm;          // y- Koordinate
      image1.canvas.lineto(x,y);
      end;

end;

cltom 18. Jun 2013 14:14

AW: Stern Programmieren und zeichnen
 
Hallo,

die x-Koordinate Deines Anfangspunktes ist falsch, sollte sein:

Delphi-Quellcode:
x:=ir+xmm; y:=ymm; // Anfangspunkt -> ir - Innenradius
gruß
tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz