Ich hab nen kleines GrafikProgramm geschrieben, mit dem man Linien,Dreiecke,Rechtecke,Quadrate,
Ellipsen usw. zeichnen kann.Man kann die Objekte so aufziehen, also man sieht immer wie die Linie oder so
aussieht, während man sie zieht. So jetzt möchte ich, das wenn man shift drückt, während man nen Linie zieht,
dass die Linien nur um 45° Winkel gezeichnet werden(so wie bei Photoshop).
Das Zeichnen der Linie funktioniert so, man klickt irgendwo hin, was der Startpunkt ist und man lässt die Maus dann
gedrückt und zieht die Linie hinter sich her.
ich hab mir das dann so überlegt, das ich überprüfen muss, in welchem Winkel die Linie zum Startpunkt ist.
Delphi-Quellcode:
if ssShift in Shift
then begin
if (SP.X=X) or (radtodeg(ArcSin((X-SP.X)/(Y-SP.Y)))<=45)
then EP:=Point(SP.X,Y);
end
else EP:=Point(X,Y);
(SP=StartPunkt, der wird beim klick gesetzt(OnMouserDown))
das geht auch so schon nen bissl,wenn man vom Startpunkt aus die Maus senkrecht nach unten bewegt oder nen bissl
schräg recht nach unten.Das Problem ist nur, dass der wenn man die Maus zuweit
vom StartPunkt aus nach schräg rechts unten verschiebt nen Fehler 'Invalid Floating Point Operation' ausgibt.
//Edit: Ein Punkt an dem es net geht wäre (153/153) und als Startpunkt(48/48)