Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten (https://www.delphipraxis.net/195428-brauche-denkanstoss-fuer-zeichnung-mit-gauss-kruegerkoordinaten.html)

verkouter 30. Mär 2018 16:32

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:
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;
mit diesem Code funktioniert jetzt das Drehen.
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.

brechi 2. Apr 2018 15:27

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;

verkouter 2. Apr 2018 18:23

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.
Seite 2 von 2     12   

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