PictureBox transparent

Signaler
Messages postés
4
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
1
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 août 2010
-
Bonjour,



Voici mon problème : j'ai un PictureBox qui contient une image et je voudrais simuler le déplacement d'un objet sur l'image,


mais je veux que l'objet soit dessiné d'une manière transparente sur
l'image principale. est ce que quelqu'un sait comment faire ça sous
compact framework.



Merci.

6 réponses

Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
Je suis pas sûr d'avoir bien compris la question mais les picturebox gèrent la transparence.

Si tu veux déplacer une picturebox2 dans une picturebox1 plus grande, il te suffit de mettre backcolor de picturebox2 à transparent et d'y charger un format image qui gère la transparence (à tout hasard: png)
Messages postés
4
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
16 avril 2008

Salut, j'ai déjà essayé de faire comme ce que t'as dit càd définir le BackColor à transparent mais le problème c'est le PictureBox2 devient transparent mais uniquement par rapport au Form ce qui est tout à fait normal puisque c'est l'objet parent, alors j'ai essayé de définir PictureBox1 comme étant le parent de PictureBox2 mais ça me balance une exception et j'arrive pas à le faire marcher sur compact framework, je pense que la même chose marche nickel sur PC. donc je suis un peu coincé :-( .
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
Tu as raison, c'est parceque par défaut une picturebox n'est pas un container et donc Visual Studio va mettre pic2 dans la form, et non dans pic1. La faut bidouiller un peu le code généré automatiquement par Visual Studio, qq part tu dois avoir du code type:

Form1.Controls.Add(PictureBox2);

Que tu enlève et que tu remplace par :
PictureBox1.Controls.Add(PictureBox2);

Et ca va régler ton problème. Attention cependant Visual Studio est têtu: si tu drag and drop la pic2, il va la remettre dans la form. Pour la bouger faut y'aller en modifiant les propriété left/top... Pas très pratique.
Messages postés
4
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
16 avril 2008

en fait sous compact framework l'attribut Controls n'est pas accessible pour les objets de type PictureBox, il l'est uniquement pour les objets de type Form. j'ai essayé de definir l'objet parent comme ça : pictureBox2.Parent = pictureBox1;
mais ça me balance l'exception suivante :

System.ArgumentException was unhandled
Message="Value does not fall within the expected range."
StackTrace:
at Microsoft.AGL.Common.MISC.HandleAr()
at System.Windows.Forms.Control._SetParent()
at System.Windows.Forms.Control.set_Parent()
at LastPictureBoxTest.Form1..ctor()
at LastPictureBoxTest.Program.Main()
Messages postés
7
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
13 août 2013

Bonjour,
Je vous remercie pou cette aide qui m'est d'un grand secours
Votresupersauveur
Messages postés
1
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 août 2010

y a plus simple

1 metre ta premier image en image de font de ta picturebox
2 cree un objet bitmap qui va ton tenir ton objet qui bouge
3 dans le bitmap tu as une methode MakeTransparent(); pour lui designer la couleur qui va etre transparente.
4 mette l image de ton objet comme image de ta picturbox.

exemple :

this.picbox.BackgroundImage = platau_bomberman.Properties.Resources.herbe;
Bitmap image = platau_bomberman.Properties.Resources.tonneau_transparente;
image.MakeTransparent(Color.White);
this.picbox.Image = image;

pour le deplacement tu :

this.picbox1.Image = null;
this.picbox2.Image = image;