Dessiner des fléches parallèle à une droite [Résolu]

Signaler
Messages postés
14
Date d'inscription
dimanche 29 août 2004
Statut
Membre
Dernière intervention
18 janvier 2009
-
Messages postés
14
Date d'inscription
dimanche 29 août 2004
Statut
Membre
Dernière intervention
18 janvier 2009
-
Bonjour,

je recherche un code qui pourrais me permettre de dessiner des fléches paralèles à une droite
en vb6, le dessin se faisant dans une picturebox

voici l'exemple :

droite : _______________________________________
Fleches : --> --> --> --> --> --> --> --> --> -->

quelqu'un pourrait-il m'aider

par avance merci

3 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

C'est quoi le probléme, utilise les fonction de dessin et une boucle

Const largeur As Integer = 200
Const largeurfleche As Integer = 20
Const hauteurfleche As Integer = 10

Private Sub Form_Load()
Me.TaPictureBox.ScaleMode = 3
End Sub
Private Sub TaPictureBox_Paint()
Me.TaPictureBox.Line (0, 0)-(largeur, 0)
Dim i As Integer
For i = 0 To Int(largeur / (largeurfleche * 2))
Call DrawFleche(largeurfleche * i * 2, Int(3 * hauteurfleche / 2))
Next i
End Sub
Private Sub DrawFleche(ByVal X As Integer, ByVal Y As Integer)
Me.TaPictureBox.Line (X, Y + Int(hauteurfleche / 2))-(X + largeurfleche, Y + Int(hauteurfleche / 2))
Me.TaPictureBox.Line (X + largeurfleche - 5, Y)-(X + largeurfleche, Y + Int(hauteurfleche / 2))
Me.TaPictureBox.Line -(X + largeurfleche - 5, Y + hauteurfleche)
End Sub

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Bon, apparament, vu tes précédents poste, t'as eu les même réponses.
Si tu veux que se sois tout le temps parraléle quelque soit l'angle de ta droite il faut travailler un peu la trigonométrie.
Un début pour te mettre sur la voie:
Mais attention, c'est loins d'être parfait, j'ai fait ca à la va-vite. Je te laisse corriger les nombreuses erreurs.

Const PI As Double = 3.14159265359
Const ArrowsWidth As Integer = 10
Const ArrowsHeaderLength As Integer = 5
Const Decal As Integer = 10

Private Sub Form_Load()
Me.TaPictureBox.AutoRedraw = True
Me.TaPictureBox.ScaleMode = 3
Call DrawLineWithArrows(10, 10, 200, 200)
End Sub

Private Sub DrawLineWithArrows(ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
Dim Alpha As Double : Alpha = Atn((y2 - y1) / (x2 - x1))
Dim l As Double : l = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
TaPictureBox.Line (x1, y1)-(x2, y2)
Dim i As Integer
For i = 0 To (l / (ArrowsWidth * 4)) - 1
Dim PosX As Double : PosX = x1 + Cos(Alpha) * i * ArrowsWidth * 2
Dim PosY As Double : PosY = y1 + Sin(Alpha) * i * ArrowsWidth * 2
Dim dX As Double : dX = PosX + Cos(Alpha + (PI / 2)) * Decal
Dim dY As Double : dY = PosY + Sin(Alpha + (PI / 2)) * Decal
Call DrawFleche(PosX + dX, PosY + dY, Alpha)
Next i
End Sub

Private Sub DrawFleche(ByVal X As Double, ByVal Y As Double, ByVal Alpha As Double)
Dim xF As Integer : xF = X + Cos(Alpha) * ArrowsWidth
Dim yF As Integer : yF = Y + Sin(Alpha) * ArrowsWidth
TaPictureBox.Line (X, Y)-(xF, yF)
TaPictureBox.Line (xF, yF)-(xF - Cos(Alpha + (PI / 4)) * ArrowsHeaderLength, yF - Sin(Alpha + (PI / 4)) * ArrowsHeaderLength)
TaPictureBox.Line (xF, yF)-(xF - Cos(Alpha + (7 * PI / 4)) * ArrowsHeaderLength, yF - Sin(Alpha + (7 * PI / 4)) * ArrowsHeaderLength)
End Sub

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Messages postés
14
Date d'inscription
dimanche 29 août 2004
Statut
Membre
Dernière intervention
18 janvier 2009

Merci beaucoup Kenji pour ce code

Laurent