nexell
Messages postés2Date d'inscriptionmardi 6 octobre 2009StatutMembreDernière intervention16 juin 2011
-
16 juin 2011 à 00:25
nexell
Messages postés2Date d'inscriptionmardi 6 octobre 2009StatutMembreDernière intervention16 juin 2011
-
16 juin 2011 à 21:06
Salut...
J'aimerais savoir quel problème y a t-il à poser cette condition:
-----------------------------------------------
If picturebox1.image is picturebox2.image then
...
End if
------------------------------------------------
En fait je débute en VB et en programmation en général, je dois avouer que je ne comprends pas grand chose en POO, donc ma démarche est encore procédurale.
J'ai conçu un puzzle avec vb.net 2008 et je bute sur la condition finale qui est sensée vérifier le contenu de mes (25) picturebox et stopper le jeu dans le cas où on a le bon ordre. J'ai utilisé des conditions du style:
-If picturebox1.image is image.fromfile(directory.getcurrentdirectory &"le chemin") then
...
End if
- If picturebox1.imagelocation = image.fromfile(directory.getcurrentdirectory &"le chemin") then
...
End if
et d'autres encore mais rien... le compilateur ne signale aucune erreur de syntaxe mais n'entre même pas dans ces conditions même quand il le faut...
J'ignore où je pèche mais j'attends vos conseils et astuces. Merci d'avance.
nexell
Messages postés2Date d'inscriptionmardi 6 octobre 2009StatutMembreDernière intervention16 juin 2011 16 juin 2011 à 21:06
Très prompte, j'adore merci encore pour les conseils et astuces Mayzz je vais les tester sur le champ...(çà va être énorme ) et je te dirai ce qu'il en est...
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 16 juin 2011 à 14:32
Salut,
En faite VB ne comparera pas le contenu de tes images pour savoir si elle sont identiques car il faudrait pour cela, vérifier tout un ta de chose, à commencer par le format de l'image puis pixel par pixel regarder s'ils sont identiques etc...
La seule chose que VB compare, ce sont les instances. Il regarde si l'allocation mémoire correspond. Pour cela tu peux utiliser la méthode Equals.
If picturebox1.image.Equals(PicturBox2.image) then
...
End if
Cela pourra t'aider. Cependant les images devront être de la même instance. Dans ton programme, la partie ou l'utilisateur déplace les images ne devra pas recréer d'instance mais conserver les instances existantes. La ligne ci-dessous :
Retournera donc toujours un résultat faux, car Image.FromFile créera une instance (donc une allocation mémoire) différente de celle de PictureBox1.Image
Du coup tu ne peux utiliser Equal que dans la mesure ou :
PictureBox1.Image = Image.FromFile("CheminImage")
PictureBox2.Image = PictureBox1.Image
If PictureBox1.Image.Equals(PictureBox2.Image) Then
Donc il faut que lors ce que l'utilisateur déplace l'image dans ton puzzle tu ne recharge pas l'image depuis le fichier mais que tu pointe l'instance du modèle que l'utilisateur déplace vers le PictureBox de destination.
Après ce n'est pas spécialement la solution la plus adaptée. Tu peux aussi identifier les PictureBox avec un Tag pour savoir que quelle image il s'agit par exemple.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.