AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ablauffehler, Hilfe

Ein Thema von sweety · begonnen am 24. Jan 2007 · letzter Beitrag vom 24. Jan 2007
Antwort Antwort
sweety

Registriert seit: 21. Jan 2007
3 Beiträge
 
#1

Ablauffehler, Hilfe

  Alt 24. Jan 2007, 01:09
Hallöchen
Habe es geschafft einen Quelltext zu erstellen, wo ich dachte der funktioniert, tut er aber noch nicht so wirklich.
Mein Schmuckstück:
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.


sweety

[edit=MrSpock] Code Tags eingefügt. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Ablauffehler, Hilfe

  Alt 24. Jan 2007, 01:24


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
mfg zecke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Ablauffehler, Hilfe

  Alt 24. Jan 2007, 08:16
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:
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;
Denke mal drüber nach.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 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