DESSINER UNE LIGNE AVEC UNE FLÈCHE

Signaler
Messages postés
132
Date d'inscription
mardi 31 octobre 2000
Statut
Membre
Dernière intervention
2 mai 2004
-
Messages postés
2
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
7 juin 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5420-dessiner-une-ligne-avec-une-fleche

Messages postés
2
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
7 juin 2007

salut ffert, votre code Delphi ci-haut m'a beaucoup aidé.
Je ne peux pas avoir de votre part un autre code Delphi qui trace un rectangle rempli des lignes droites horizontales ?

Merci
Baron
Messages postés
63
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
15 décembre 2009

Bonjour,

Je pense qu'il y a plus simple pour tracer une flèche..... et ça utiliser aussi les cours de trigo :
il faut : trouver l'angle de la droite, et faire un léger décalage (avant et arrière)...

voilà la source en Delphi : trés facilement compréhensible et adaptable en VB
j'ai fait ça sur des évenement souris.

procedure TForm1.FormMouseDown(Sender: TObject; Button: MouseButton; Shift: TShiftState; X, Y: Integer);
begin
// mémoriser le premier point
x1 := X;
y1 := Y;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
aX : double; // arc X : cosinus
aY : double; // arc Y : Sinus
begin
X2 := X;
Y2 := Y;
// Pythagore : trouver le rayon
r := Sqrt(sqr(X2 - X1) + sqr(Y2 - Y1));
if r > 0 then
begin
// trouver l'angle de la droite tracée à la souris
ax := arccos((X1 - X2) / r);
ay := arcsin((Y1 - Y2) / r);
end
else
begin
// éviter les erreur de division par zéro
ax := -1;
ay := -1;
end;
// tracer la ligne pointée avec la souris
Form1.Canvas.MoveTo(X1, Y1);
Form1.Canvas.LineTo(X2, Y2);
// tracer la flèche
Form1.Canvas.LineTo(trunc(X2 + cos(ax + 0.2) * 20), trunc(Y2 + sin(ay + 0.2) * 20));
Form1.Canvas.LineTo(trunc(X2 + cos(ax - 0.2) * 20), trunc(Y2 + sin(ay - 0.2) * 20));
Form1.Canvas.LineTo(X2, Y2);
end;


Pour arriver apparement au même résultat.
0.2 c'est l'écartement de la flèche
20 c'est la taille de la flèche.
Messages postés
24
Date d'inscription
mercredi 5 septembre 2001
Statut
Membre
Dernière intervention
7 août 2003

Merci pour cette source, j'ai ramé pendant un jour pour arriver à tracer une flèche, et j'étais loin du compte ;-)
Messages postés
80
Date d'inscription
mercredi 13 mars 2002
Statut
Membre
Dernière intervention
8 novembre 2006
1
Merci ;)
Afficher les 8 commentaires