Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Richtungs bzw. Vektorpfeil zeichnen

  Alt 30. Jun 2007, 00:12
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.
Angehängte Dateien
Dateityp: zip parrow_212.zip (1,3 KB, 43x aufgerufen)
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
  Mit Zitat antworten Zitat