![]() |
realisierung von pfeilen zeichnen
ich mag in meiner paintbox mit gedrückter maustaste beliebig zeichnen können(kreise etc) und am ende eine ^ spitze haben ... wie halt ein pfeil ausschaut.
nur hab ich ein problem ... wie erkenn ich in welceh richtung mein pfeil gerade schaut(wenn ich nen kreis zeichne sollte er in der kreislinie "weiterschauen" und der pfeilkopf sollte nicht in irgendeine richtung schauen) ... wie könnte ich dies machen? |
Re: realisierung von pfeilen zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
hier anbei ein screenshot
wie fidne ich jetzt die richtung in die gezeichnet wurde ehraus damit ich die zwei linien für die pfeilspitze richtig aufsetzten kann? |
Re: realisierung von pfeilen zeichnen
Hallo Nicodius,
Theoretisch sollte es genügen, wenn Du Dir die letzten beiden Punkte merkst und Du zur Errechnung des Richtungsvektors die Koordinaten des letzten von denen des vorletzten abziehst. In der Praxis könnte hier allerdings Probleme bei "Absetzen des Stiftes" auftreten: Die Kurve macht warhscheinlich zum Schluss einen kleinen "Schlenker". Versuche Punkte mit größerem Abstand zu verwenden oder den Mittewert von Vektoren mit unterschiedlichen Punkten am Ende zu bilden, um das Problem zu lösen (alternativ könnten ![]() |
Re: realisierung von pfeilen zeichnen
hat wer vielleicht formeln oder fertigen code?
vom prinzip her weiß ich was du meinst .. danke schonmal aber das bringt mir derweil noch nichts :drunken: dizzys blackmamba hat ja auch so ein prinzip .. wie machst du das dizzy? |
Re: realisierung von pfeilen zeichnen
Delphi-Quellcode:
{Flaeche.Canvas.MoveTo(X,Y); // ---+
Flaeche.Canvas.LineTo(X+10,Y+10);// ---_- Flaeche.Canvas.LineTo(X,Y+10);// ---_-/ Flaeche.Canvas.MoveTo(X+10,Y+10);// ---_- Flaeche.Canvas.LineTo(X+10,Y);} // ---_-\ = ----> mit diesem code kann ich ne spitze machcne(von ner freundin.. die hat das sofort gehabt ;) ) --- aber die zspitze zeig t immer in de rechte untere ecke vom formula ... also geht nur bei einer neigung in die ecke runter das der pfeil wie ein pfeil aussieht ... was kann ich denn dagegen machen? |
Re: realisierung von pfeilen zeichnen
Zitat:
Ich weiss in welche Richtung der "Pfeil" (Kopf) Zeigt, und alles dahinter bleibt quasi liegen bis das Schwanzende ankommt. Bei deinem Problem würde ich es genau so versuchen wie choose es beschrieben hat. |
Re: realisierung von pfeilen zeichnen
das kapier ich aber nicht :zwinker:
|
Re: realisierung von pfeilen zeichnen
Vieleicht mit
Delphi-Quellcode:
Und dann CursorPos.X in einer Variable speichen und gucken ob sie größer oder kleiner ist das gleiche noch mit CursorPos.Y !
var
CursorPos: TPoint; begin GetCursorPos(CursorPos); Caption := IntToStr(CursorPos.X) +' '+ IntToStr(CursorPos.Y); end; Mfg MrScholz |
Re: realisierung von pfeilen zeichnen
ist das nicht mit steigung k möglich
|
Re: realisierung von pfeilen zeichnen
MrScholz dazu brauch ich aber gar nicht den cursor ... den endpunkt hab ich auch so ;)
|
Re: realisierung von pfeilen zeichnen
Ich habe das gerade mal gemach hier der QuellCode:
Delphi-Quellcode:
Ich hoffe das ist ,dass was du suchst! :mrgreen:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; CursorPos: TPoint; Links , Unten : Integer; implementation {$R *.dfm} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin GetCursorPos(CursorPos); Links:=CursorPos.X; Unten:=CursorPos.Y; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin GetCursorPos(CursorPos); Caption := IntToStr(CursorPos.X) +' '+ IntToStr(CursorPos.Y); if links > CursorPos.X then showmessage('Nach links') else showmessage('Nach rechts'); if unten > CursorPos.Y then showmessage('Nach oben') else showmessage('Nach unten'); end; end. Mfg MrScholz |
Re: realisierung von pfeilen zeichnen
nein, eigentlich überhaupt nicht :mrgreen:
ich suche Zitat:
der strich geht in ne richtung(0 - 360° möglich ;) ) die will ich heruasfinden um(und nacher einen pfeilkopf hinzuzeichnen(wie das geht will ich auch wissen ;) ) |
Re: realisierung von pfeilen zeichnen
Naja wer lesen kann ist klar im Vorteil :oops:
Mfg MrScholz |
Re: realisierung von pfeilen zeichnen
Zitat:
|
Re: realisierung von pfeilen zeichnen
Also ich zeige hier mal, wie man einen Pfeil zeichnet, der in eine beliebige Richtung zeigt.
Zunächst brauchen wie die Hilfsfunktionen aus: ![]()
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var pfeil : array[0..3] of TPoint; begin // Pfeil im Ursprung zeigt nach "rechts" pfeil[0] := Point(0 ,0); pfeil[1] := Point(0, -10); pfeil[2] := Point(30, 0); pfeil[3] := Point(0, 10); // die Linie wird in Canvas.Polygon autom. geschlossen // Drehung des Pfeils im Ursprung Rotate2Darray(pfeil, 0.5); // Verschiebung des Pfeils Translate2Darray(pfeil, Point(x, y)); // Zeichen des Pfeils Canvas.Polygon(pfeil); end; |
Re: realisierung von pfeilen zeichnen
ich wiederhole die 9 klasse - vektoren(länge+richtung) hab ich schon in der 7 gelernt ^^
@shmia danke das probier ich mal aus :) |
Re: realisierung von pfeilen zeichnen
wobei man sagen muss das sincos in math liegt ;) ... aber ich sag gleich was dazu ;)
|
Re: realisierung von pfeilen zeichnen
:roll: das macht bei mir aber ÜBERhaupt nichts gescheites(zeichent gerademal ein dreieck :mrgreen: ) :zwinker: ein pfeil ist etwas mit strich :) und deins rotiert auch nicht :cry: aber danke trotzdem :stupid:
|
Re: realisierung von pfeilen zeichnen
Zitat:
Nun ist es an Dir, dies in die Praxis umzusetzen. :roll: Ein Pfeil ist ein Dreick mit einem Strich dran. Der "Strich" ist ja schon vorhanden; also brauchst du nur noch am Endpunkt der Linie ein Dreick zu zeichnen, dass in die Richtung der Linie schaut, oder??? Hast du dich nicht gefragt, was das Argument 0.5 bei Rotate2Darray(pfeil, 0.5); bedeutet? :coder2: Das ist der Winkel im Bogenmass!!! Verändert man diesen Wert, dreht sich der Pfeil in die angegebene Richtung!!! |
Re: realisierung von pfeilen zeichnen
aso, ja sorry... aber siehst du genau DARAN scheiterts ... ich kenn mich da wirklich nid aus :mrgreen:
|
Re: realisierung von pfeilen zeichnen
shmia danke danke!!! aber ein problem noch :) ... wie bekomme ich den winkel heraus in der die linie zeigt?
|
Re: realisierung von pfeilen zeichnen
wie bekomme ich denn den winkel und das bogenmaß ? :cry: ic hsuch seit stunden finde aber nur technische aanleitungen :cry: --- suche verzweifelt in meinen alten phyikbüchern(ich hab das ja scho nmal gemacht(1 rad = 180° oder so) bitte helft mir :cry:
|
Re: realisierung von pfeilen zeichnen
|
Re: realisierung von pfeilen zeichnen
Um den Winkel herauszubekommen musst Du folgendes machen:
Sei p1 und p2 die letzten beiden Punkte vom Typ TPoint. Dann ist der Winkel a gegeben durch:
Delphi-Quellcode:
Wie arcTan als funktion in Delphi heisst weiß ich jetzt nicht genau aber das kriegste schon raus!
a:= arcTan[ (p2.y-p1.y)/(p2.x-p1.x) ]
Und du musst vorher noch auf den Sonderfall aufpassen wenn die x-Koordinaten beide gleich sind, weil dann Division durch 0 auftritt! Das am besten mit ner Exceptoin abfangen und dann den Winkel halt auf 90 grad setzten... Mit den Infos müssteste den Rest alleine schafen denk ich! :thumb: |
Re: realisierung von pfeilen zeichnen
danke .. ich habe gestern einfach experimentiert und habe es geschafft das das nach alle in die rechte richtung gezeichneten gehen ...
so .. die formel ist gut! das ist nämlich auch die steigung k wenn ich mich nicht irre :) ... aber für was steht das arcTan ? tangente oder? ich such ob ichs krieg ... vielen dank schonmal! |
Re: realisierung von pfeilen zeichnen
Hallo Nicodius,
wenn ich das richtig sehe, brauchst Du nur ein wenig Vektorrechnung, der Winkel zur Abzisse sollte nicht von Bedeutung sein. Sieh die einmal ![]() |
Re: realisierung von pfeilen zeichnen
EDIT
DANKE CHOOSE DAS WARS!!! :thumb: :thumb: :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz