![]() |
Ablauffehler, Hilfe
Hallöchen :P
Habe es geschafft einen Quelltext zu erstellen, wo ich dachte der funktioniert, tut er aber noch nicht so wirklich. Mein Schmuckstück: :gruebel:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var w,wh,ws,xdel,ydel,lange,wlast,wd,xs1,ys1: real; xvorz,yvorz: boolean; //vorzeichen delta xy bestimmen i:integer; xs,ys:array[1..40] of integer; dist:string; radtodeg:Extended; begin for i:=1 to n do w:=StrToFloat(edit1.Text); //umrechnen in pi und volle winkel if w <=180 then wh:=((w/180)*pi) else wh:=-(((w-180)/180)*pi); ws:=sin(wh); for i:=1 to n do begin //x-werte differenz zu ersten n-punkt, ersten punkt holen und mit x-werte subtraieren xdel:=xp[n-i]-xp[n];//delta x-wert n-i ydel:=yp[n-i]-yp[n];//delta y-wert //bestimmen der vorzeichen if xdel>0 then xvorz:= true else xvorz:= false; if ydel>0 then yvorz:= true else yvorz:= false; //berechnung neuwert sin bzw. cos lange:=sqrt((xdel*xdel)+(ydel*ydel)); wlast:=(radtodeg(arctan*(ydel/xdel)));//winkel von n x-achse zu punkt //4.Quatrant if (xvorz and yvorz)=true then wd:= wlast-w; //3.Quatrant if xvorz=false then begin if yvorz=true then wd:=180+wlast-w; end; //2.Quatrant if xvorz=false then begin if yvorz=false then wd:=180+wlast-w; end; //1.Quatrant if xvorz=true then begin if yvorz=false then wd:=(wlast-w); end; wd:=degtorad(wd);//drehwinkel x-achse in rad //richtungssinn der winkel xs[1]:=xp[n]; ys[1]:=yp[n]; xs1:=(xp[n]+lange*(cos(wd)))); xs[i+1]:=round(xs1); ys1:=(yp[n]+(lange*(-sin(wd)))); ys[i+1]:=round(ys1); dist:=FloatToStr(n+i)+''+'x'+FloatToStr(xs[i+1])+'y'+FloatToStr(ys[i+1]); image1.Canvas.Pen.Color:=clred; image1.Canvas.Rectangle(xs[i+1]-1,ys[i+1]-1,xs[i+1]+1,ys[i+1]+1); end; //zeichnen der gedrehten Figur for i:=1 to n do begin image1.Canvas.MoveTo(xs[i],ys[i]); image1.Canvas.LineTo(xs[i+1],ys[i+1]); end; image1.Canvas.MoveTo(xs[n],ys[n]); image1.Canvas.LineTo(xs[1],ys[1]; end; end. Bin für jede Hilfe dankbar. :love: sweety [edit=MrSpock] Code Tags eingefügt. Mfg, MrSpock[/edit] |
Re: Ablauffehler, Hilfe
:hi:
Bitte setze das Ganze in Delphi-Code-Tags. Beim Beitrag erstellen/editieren, der Button 'Delphi-Code' dann code rein und nochmal den Button. Ich Blick einfach nicht durch ohne diese Formatierung :shock: |
Re: Ablauffehler, Hilfe
Hallo Sweety,
da liegt ja einiges im Argen... Dein Code hat nichts im OnClick-Handler eines Button verloren. Du willst eine durch ein Polygon beschriebene Umriss-Figur zuerst drehen und dann zeichnen. Das kann man auch so schreiben, dass es jeder erkennen kann:
Delphi-Quellcode:
Denke mal drüber nach.
type
TPoints = array of TPoint; TMainForm = class(TForm) // ... procedure ButtonClick(Sender: TObject); private Points: TPoints; function Rotate(const p: TPoints; angle: Integer): TPoints; end; function TMainForm.Rotate(const p: TPoints; angle: Integer): TPoints; begin // ... end; procedure TMainForm.ButtonClick(Sender: TObject); var pts: TPoints; angle: Integer; begin if TryStrToInt(AngleEdit.Text, angle) then begin pts := Rotate(Points, angle); Image.Canvas.Polygon(pts); end; end; Freundliche Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz