Déplacer un triangle avec la souris

Résolu
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006 - 4 nov. 2005 à 23:25
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006 - 6 nov. 2005 à 17:52
Bonjour a toutes et tous,



J'aimerais pouvoir déplacer une figure géométrique simple (un triangle
évidé par exemple) au dessus d'une image. Cette figure (cercle évidé ou
bien triangle vide) suivrait le pointeur de la souris, et, au clic, se
figerait à l'endroit voulu.

Que conseillerez-vous comme approche? merci d'avance

6 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2005 à 00:23
Option Explicit



Dim x1 As Long

Dim y1 As Long

Dim x2 As Long

Dim y2 As Long

Dim x3 As Long

Dim y3 As Long

Dim XX As Long

Dim YY As Long



Private Sub Form_Load()

x1 50: y1 50

x2 200: y2 100

x3 120: y3 200

Picture1.ScaleMode = 3

Picture1.DrawMode = 7

Picture1.Line (x1, y1)-(x2, y2), vbRed

Picture1.Line (x2, y2)-(x3, y3), vbRed

Picture1.Line (x3, y3)-(x1, y1), vbRed

End Sub



Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

XX X: YY Y

End Sub



Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim dx As Long

Dim dy As Long

If Button = 1 Then

Picture1.Line (x1, y1)-(x2, y2), vbRed

Picture1.Line (x2, y2)-(x3, y3), vbRed

Picture1.Line (x3, y3)-(x1, y1), vbRed

dx = X - XX

dy = Y - YY

XX = X

YY = Y

x1 = x1 + dx

x2 = x2 + dx

x3 = x3 + dx

y1 = y1 + dy

y2 = y2 + dy

y3 = y3 + dy

XX = X

YY = Y

Picture1.Line (x1, y1)-(x2, y2), vbRed

Picture1.Line (x2, y2)-(x3, y3), vbRed

Picture1.Line (x3, y3)-(x1, y1), vbRed

End If

End Sub


Daniel
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
5 nov. 2005 à 13:14
Bonjour,

Déplacer un triangle ou un cercle, je ne sais pas, vb6 n'pas de
composant de ce type. Par contre tu peux déplacer une image dans un
triangle ou un cercle placés sur ta Form.(je ne sais plus de qui est
cette source).



Option Explicit

Dim xTemp, xTemp2 As Long

Dim yTemp, yTemp2 As Long



'form ou un autre conteneur

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)





Source.Move X - xTemp, Y - yTemp

End Sub



'Si on drag sur l'objet

Private Sub Image1_DragDrop(Source As Control, X As Single, Y As Single)



Source.Move xTemp2 + X - xTemp, yTemp2 + Y - yTemp

End Sub



'Et l' objet à déplacer

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)



Image1.Drag

xTemp = X

yTemp = Y

xTemp2 = Image1.Left

yTemp2 = Image1.Top

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006
5 nov. 2005 à 14:32
merci beaucoup, mais cela ne correspond pas tout a fait a mes attentes
car l'inconvenient de deplacer une image c'est que cette image est
necessairement de forme rectangulaire, non?

or, avec mon exemple du triangle, il faudrait gerer en plus la transparence. Voyez vous ma problematique?



merci d'avance
0
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006
6 nov. 2005 à 10:46
Merci Daniel pour ta reponse, c'est exactement ce que je cherchais!
mais je ne comprends pas pourquoi lorsque l'on deplace le triangle, les
pixels "en dessous" restent memorisés et reapparaissent une fois que le
triangle est parti? en tout cas, c'est ce principe de calque que je
souhaitais obtenir! merci!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2005 à 12:16
"les pixels "en dessous" restent memorisés et reapparaissent une fois que le triangle est parti"


normal avec DrawMode = 7 on dessine en mode Xor

essaye les différentes valeurs de 1 à 16, mais ça risque de ne pas faire joli parce les lignes du triangle vont rester.

autre chose que j'ai pas faite c'est de détecter si le point est à l'intérieur du triangle,

voir l'excellente source de Vb Lover




Daniel
0
jekifvb6 Messages postés 156 Date d'inscription lundi 13 novembre 2000 Statut Membre Dernière intervention 18 septembre 2006
6 nov. 2005 à 17:52
Merci en tout cas beaucoup pour ton aide qui m'est tres utile, pauvre newbie que je suis! ;)
0
Rejoignez-nous