Drag'n Drop d'une forme sur une image

Billybobbonnet Messages postés 148 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 novembre 2013 - 23 avril 2007 à 17:17
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 23 avril 2007 à 18:33
Bonjour à tous!

J'ai débuté le VB6 il y a peu de temps et je lutte encore et toujours pour faire ce que je veux. Dans le cas présent, c'est surtout que je n'ai jamais fait ce genre de truc donc j'ai un peu de mal.

Le but est d'extraire une miniature d'une vidéo, et de l'afficher dans une form. Pour ça c'est bon j'ai réussi. Une fois l'aperçu de la vidéo obtenu sous forme d'image, le but est d'en découper une bande horizontale. Pour ça, je crée une forme rectangulaire (shape) transparente avec un trait pour les contours et de taille fixe, et je veux donner la main à l'utilisateur pour qu'il l'a place comme bon lui semble verticalement (axe des x), sur l'image.

Après ça, je récupère les coordonnées en x de la forme (ça devrait aller sur ce point) et je fais un traitement vidéo pour recouper la vidéo en fonction des coordonnées en x choisies par l'utilisateur, mais ceci est une autre histoire...

Le code que j'utilise est récupéré sur ce bon vieux site VBFrance à cet endroit mais je ne suis pas sûr qu'il convienne pour ce que je veux faire. Il est sur deux axes en plus.

Je demande donc comment je peux faire pour donner la main sur la position du rectangle? J'ai pensé d'abord au drag'n drop ou alors à des boutons de défilement ou avec les flèches (ce qui revient au même). Le but étant que ça fonctionne, tous les chemins menent à Rome

Pouvez vous aussi me dire si le code que j'ai trouvé (lien ci dessus) est du genre qu'il me faut?

Ps: question subsidiaire pour débutants tels que moi, comment je fais pour dire "lorsque j'appuie sur entrée, je fais..." Question stupide mais bon..

Merci à tous

1 réponse

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 avril 2007 à 18:33
Je ne sais pas ce que tu cpùptes fabriquer avec ta Shape


 


Inspire-toi donc de ceci (un petit zoom à 4 sous) . Il ne te restera plus qu'à doter de poignées le contrôle image1.
Je n'ai pas l'intention de tour te faire et ce qu'il te reste à faire est vraiment simple.
Commence par les poignées et par jouer avec la propriété visible à un double click sur Picture1 (fastoche)
Quand tu auras passé ce 1er cap (et pas avant) reviens avec ton code et je t'expliquerai comment faire un click sur image1 en le distinguant du mousedown utilisé pour le drag and drop ...

Sur une Form :
Une picturebox picture1 avec sa propriéré Picture pointant vers un fichier image
Une pictureBox picture2 sans image
dans Picture1 : un conbtrôle image image1 sans image (plus petit que picture1

lance et fait glisser image1 à la souris.
Comprends, analyse et adapte

Option Explicit


Dim XX As Single
Dim YY As Single


Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long


Private Sub Form_Load()
    Me.ScaleMode = vbPixels
    Picture1.ScaleMode = vbPixels
    Picture2.ScaleMode = vbPixels
    Picture1.AutoSize = True
    Image1.BorderStyle = 1
End Sub


Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    XX = Me.ScaleX(X, vbTwips, vbPixels)
    YY = Me.ScaleY(Y, vbTwips, vbPixels)
End Sub




Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbLeftButton Then
        Image1.Left = Image1.Left - XX + Me.ScaleX(X, vbTwips, vbPixels)
        Image1.Top = Image1.Top - YY + Me.ScaleY(Y, vbTwips, vbPixels)
        StretchBlt Picture2.hdc, 0, 0, Picture2.Width, Picture2.Height, Picture1.hdc, Image1.Left, Image1.Top, Image1.Width, Image1.Height, vbSrcCopy
    End If
End Sub
0
Rejoignez-nous