Hm. Ich verpack das mal in eine Prozedur, damit wir da nicht eventuell irgendwelche Variablen verwechseln:
Delphi-Quellcode:
function degtorad(angle : Double) : Double;
begin
result := pi * angle / 180;
end;
function radtodeg(angle : Double) : Double;
begin
result := 180 * angle / pi;
end;
procedure DrawArrow(Canvas: TCanvas; StartP, EndP: TPoint);
const
OffsetAngle = 30;
ArrowLength = 10;
var
LineAngle: Integer;
ArrowLine1,ArrowLine2: TPoint;
begin
LineAngle := Round(RadToDeg(arctan((EndP.Y-StartP.Y) div (EndP.X - StartP.X))));
ArrowLine1.X := Round(EndP.X + cos(DegToRad(LineAngle+OffsetAngle))*ArrowLength);
ArrowLine1.Y := Round(EndP.Y + sin(DegToRad(LineAngle+OffsetAngle))*ArrowLength);
ArrowLine2.X := Round(EndP.X + cos(DegToRad(LineAngle-OffsetAngle))*ArrowLength);
ArrowLine2.Y := Round(EndP.Y + sin(DegToRad(LineAngle-OffsetAngle))*ArrowLength);
Canvas.MoveTo(StartP.X,StartP.Y);
Canvas.LineTo(EndP.X,EndP.Y);
Canvas.LineTo(ArrowLine1.X,ArrowLine1.Y);
Canvas.LineTo(ArrowLine2.X,ArrowLine2.Y);
Canvas.LineTo(EndP.X,EndP.Y);
end;
Hrmpf.
Macht immer noch nicht wirklich was er machen soll.
EDIT: Update. Macht inzwischen immerhin Sachen, die wie Pfeile aussehen, aber ich muss anscheinend doch Unterscheidungen für die einzelnen Quadranten einbauen.
EDIT: Kleine Demo gebastelt.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1