AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten
Entschuldigung, das ich mich solange nicht gemeldet habe. Hatte im Moment viel zu tun.
der Fehler lag im ABS vor xn und yn.
Code:
mit diesem Code funktioniert jetzt das Drehen.
procedure TForm1.ToolButton2Click(Sender: TObject);
var winkel,x,y,xn,yn,xc,yc,u,d :real; Img : TImage; i:integer; begin winkel:=strtofloat(drehwinkel.Text); xc:=max1-min1; yc:=max2-min2; label1.caption:=floattostr(xc)+' '+floattostr(yc); for i := stringgrid1.RowCount-1 downto 1 do begin x:=strtofloat(stringgrid1.Cells[1, i]); y:=strtofloat(stringgrid1.Cells[2, i]); u:= Winkel * Pi/180 + arctan2(Y-Yc,X-Xc); d:= sqrt((X-Xc)*(X-Xc) + (Y-Yc)*(Y-Yc)); xn:=((Xc+d*cos(u))); yn:=((Yc+d*sin(u))); stringgrid1.Cells[3,i]:=floattostr(xn); stringgrid1.Cells[4,i]:=floattostr(yn); end; zeichnen; end; Jetzt ist immer noch das Problem, das die Zeichnung teilweise außerhalb des Images liegt. Schlecht wäre es auch nicht, wenn er die Imagegröße automatisch anpassen würde. |
AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten
Ich blick zwar gerade nicht mehr komplett durch, aber:
Delphi-Quellcode:
procedure TForm1.Zeichnen;
var x1,x2,y1,y2,a,i:integer; begin image1.Picture.assign(nil); SortStringGrid(StringGrid1, 3); min1:=strtofloat(stringgrid1.Cells[3, 1]); max1:=strtofloat(stringgrid1.Cells[3, stringgrid1.RowCount-1]); SortStringGrid(StringGrid1, 2); min2:=strtofloat(stringgrid1.Cells[4, 1]); max2:=strtofloat(stringgrid1.Cells[4, stringgrid1.RowCount-1]); label1.Caption:=inttostr(round((max2-min2+5)*20))+' '+inttostr(round((max1-min1+5)*20)); image1.Height:=abs(round((max2-min2)*20) + 40); // geaendert! image1.Width:=abs(round((max1-min1)*20)) + 40); // geaendert! // hier auf "+ 40" gaendert, da unten y2/x2 .. bei der 2. Koordinate + 40 addiert wird // ggf. noch wegen der Textausgabe vergrößern mit z.B. Canvas.GetTextHeight bzw. Canvas.GetTextWidth und die zusätzlichen "+ 25" for a := stringgrid1.RowCount-1 downto 1 do begin x1:=round((strtofloat(stringgrid1.Cells[3, a])-min1)*20); y1:=round((max2-strtofloat(stringgrid1.Cells[4, a]))*20); x2:=x1+40; y2:=y1+40; image1.canvas.brush.Style:=(bsclear); image1.canvas.pen.color:=clblack; image1.canvas.Ellipse(x1,y1,x2,y2); image1.Canvas.TextOut(x1+25,y1+25,stringgrid1.Cells[0, a]); end; end; |
AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo brechi,
die 20 ist der Vergrößerungsfaktor, die(+40) ist die Größe der Elippse ,das entspricht dann in der Zeichnung 2m. Ich habe mal die neuste Version hochgeladen.Aber ich blicke auch nicht mehr durch.Die Anpassung der Bildgröße habe ich erstmal rausgenommen. Warscheinlich ist das alles so auf diese Koordinate angepasst, daß es bei neuen Koordinaten wieder garnicht passt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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