Tester le contenu d'une picturebox sous .net [Résolu]

Messages postés
2
Date d'inscription
mardi 6 octobre 2009
Dernière intervention
16 juin 2011
- - Dernière réponse : nexell
Messages postés
2
Date d'inscription
mardi 6 octobre 2009
Dernière intervention
16 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.
            
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
2
Date d'inscription
mardi 6 octobre 2009
Dernière intervention
16 juin 2011
3
Merci
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...

Merci nexell 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de nexell
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
0
Merci
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 :

PictureBox1.image.Equals(Image.FromFile("CheminImage"))


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.
Commenter la réponse de Mayzz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.