PictureBox transparent

Chebitou Messages postés 4 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 16 avril 2008 - 14 avril 2008 à 17:50
cs_hades001 Messages postés 1 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 août 2010 - 8 août 2010 à 01:45
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

bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
14 avril 2008 à 20:57
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)
0
Chebitou Messages postés 4 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 16 avril 2008
15 avril 2008 à 00:29
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é :-( .
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
15 avril 2008 à 02:01
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.
0
Chebitou Messages postés 4 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 16 avril 2008
16 avril 2008 à 01:07
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()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
votresupersauveur Messages postés 7 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 13 août 2013
20 oct. 2009 à 20:32
Bonjour,
Je vous remercie pou cette aide qui m'est d'un grand secours
Votresupersauveur
0
cs_hades001 Messages postés 1 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 8 août 2010
8 août 2010 à 01:45
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;
0