hybrid67210
Messages postés2Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention18 février 2009
-
17 févr. 2009 à 13:48
hybrid67210
Messages postés2Date d'inscriptionlundi 19 janvier 2009StatutMembreDernière intervention18 février 2009
-
18 févr. 2009 à 12:08
Bonjour, je suis débutant en VB et je dois rendre un projet dans une semaine. Je dois faire un puzzle tout simplement. Seulement je bloque sur le dragdrop, j'ai beau chercher des codes, sur les forums etc... j'y arrive pas.
Alors je vous explique mon problème.
Voici un bout de mon code :
Dim puzzle(59) As PictureBox 'tableau de 60 picturebox qui contiendront les morceaux de l'image
Dim reponse(59) As PictureBox
Dim stockimages As New ArrayList() 'tableau qui contient les morceaux de l'image avant le mélange
'Procédure qui découpe l'image en 6*10 et répartie aléatoirement les morceaux
Public Sub creation_puzzle(ByVal image_a_decouper As Image)
'création de la grille : création de picture box contenant chaque morceaux de l'image
For i = 0 To 9
For l = 0 To 5
puzzle(m) = New PictureBox
puzzle(m).Top = 12 + l * 45
puzzle(m).Left = 12 + i * 37
puzzle(m).Width = 32
puzzle(m).Height = 40
puzzle(m).Tag = m + 1
m = m + 1
Next
Next
'création de la grille permettant de reconstituer le puzzle
For s = 0 To 9
For t = 0 To 5
reponse(y) = New PictureBox
reponse(y).Top = 300 + t * 40
reponse(y).Left = 12 + s * 32
reponse(y).Width = 32
reponse(y).Height = 40
reponse(y).BorderStyle = BorderStyle.FixedSingle
reponse(y).AllowDrop = True
reponse(y).Tag = y + 1
y = y + 1
Next
Next
'double boucle qui va générer les morceaux de l'image pour former le puzzle et les ajouter à la liste
For k = 0 To 9
For j = 0 To 5
stockimages.Add(Form1.decoupe_image(image_a_decouper, 40, 32, k * 32, j * 40))
stockimages(z).Tag = z
z = z + 1
Next
Next
nombre_images = 60
For q = 0 To 59
r = (Int(Rnd() * nombre_images)) 'génère un nombre aléatoire entre 0 et 60
puzzle(q).Image = stockimages(r) 'copie l'image sélectionnée au hasard dans la liste dans une case du puzzle
puzzle(q).Tag = stockimages(r).Tag
stockimages.RemoveAt(r) 'retire l'image du tableau pour ne pas la réafficher
nombre_images -= 1 'décrémente le nombre d'images de 1
Me.Controls.Add(puzzle(q)) 'affichage de la picturebox contenant l'image
Me.Controls.Add(reponse(q))
r = 0 'réinitialisation du nombre aléatoire
Next
End Sub
Donc en fait, au sein d'une boucle je crée mes 60 picturebox pour répartir les morceaux d'images au hasard et les 60 pour pouvoir reconstituer le puzzle. Et en fait à part faire des procédures pour chaque picturebox, ce qui est long et fastidieux, je ne vois pas comment faire vu la manière dont j'ai créé mes picturebox. J'ai vu quelque chose comme AddHandlers mais je ne sais pas à quelle procédure l'appliquer.