DESSINER UNE LIGNE AVEC UNE FLÈCHE

rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004 - 23 déc. 2002 à 04:34
cs_ntambwe Messages postés 2 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 7 juin 2007 - 8 juin 2007 à 01:54
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

cs_ntambwe Messages postés 2 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 7 juin 2007
8 juin 2007 à 01:54
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
ffert Messages postés 63 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 15 décembre 2009
26 janv. 2006 à 17:42
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.
cs_revivall Messages postés 24 Date d'inscription mercredi 5 septembre 2001 Statut Membre Dernière intervention 7 août 2003
5 avril 2004 à 22:10
Merci pour cette source, j'ai ramé pendant un jour pour arriver à tracer une flèche, et j'étais loin du compte ;-)
Ktb Messages postés 80 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 8 novembre 2006 1
23 déc. 2002 à 20:20
Merci ;)
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 déc. 2002 à 20:00
Je ne peux mettre qu'une bonne note !
Bien joué, Ktb : Enfin quelqu'un qui va au bout de ses idées et qui sait ce que refléchir veut dire !
Cool
Ktb Messages postés 80 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 8 novembre 2006 1
23 déc. 2002 à 09:49
Voilà c'est fait, je te rassure dans la réalité c'est mieux que sur l'image jpeg compressée -;)
Ktb Messages postés 80 Date d'inscription mercredi 13 mars 2002 Statut Membre Dernière intervention 8 novembre 2006 1
23 déc. 2002 à 09:03
Je vais voir ce que je peux faire ;)
rnosat Messages postés 132 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 2 mai 2004
23 déc. 2002 à 04:34
une capture serait la bienvenue, c'est possible ?
Rejoignez-nous