Affichage de deux picturebox

DeathsAngel Messages postés 7 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 31 janvier 2007 - 24 déc. 2006 à 16:42
DeathsAngel Messages postés 7 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 31 janvier 2007 - 25 déc. 2006 à 19:33
Bonjour,

Mon erreur est plutôt simple. J'ai un panel avec une image(imgTourPlayer1) (PictureBox). Quand l'usager pèse sur un bouton je veux ajouter une autre image(imgTour) en dessous de celle-ci.

Donc je fais monter la première image (imgTourPlayer1) et j'utilise les anciennes valeurs de positionement (location.x et location.y) de imgTourPlayer1  pour positioner imgTour.

Pourtant l'image ne s'affiche pas. Elle est bel et bien créée, à la bonne position mais elle n'est pas là. Toutefois si je met sa position loin de imgTourPlayer1 mon image imgTour s'affiche.

Voici mon code (qui se trouve dans l'évènement 'click' d'un bouton, et pourriez-vous m'aider. Merci d'avance.

//Position de l'image avant son déplacement
int x = imgTourPlayer1.Location.X;

int y = imgTourPlayer1.Location.Y;



//Déplacement de l'image

imgTourPlayer1.Location =

new
System.Drawing.

Point
(x, y - 10);




//Création de la deuxième image.

PictureBox
imgTour;
imgTour =

new
System.Windows.Forms.

PictureBox
();
imgTour.Image =

global
::MagicTower.Properties.

Resources
.tower;




//Positionnement de l'image.

imgTour.Location =

new
System.Drawing.

Point
(x, y);

//Propriétés de l'image.
imgTour.Size =

new
System.Drawing.

Size
(44, 5);
imgTour.Name =

"imgTour"
;
imgTour.TabStop =

false
;
imgTour.SizeMode =

PictureBoxSizeMode
.AutoSize;
imgTour.BorderStyle =

BorderStyle
.None;
imgTour.Visible =

true
;







//Ajout de l'image au panneau

pnlPlayer1.Controls.Add(imgTour);

6 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
24 déc. 2006 à 18:19
Salut,
Je ne comprends pas exactement ce que tu veux faire, mais vraisemblablement que tu t'y prends assez mal:
Si tu veux afficher plusieurs images, peut-être que tu peux créer un Graphics et appeler DrawImage pour dessiner (tu devrais redessiner dans le paint). Pour que ça soit persistant tu peux te servir d'un Control (PictureBox) mais la faut voir exactement ce que tu dois faire, car ce n'est pas logique de créer des 10aines de PictureBox pour afficher qqe images...

<hr size="2" />-Blog-
0
DeathsAngel Messages postés 7 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 31 janvier 2007
24 déc. 2006 à 18:35
Effectivement créer plusieurs PictureBox devient très lourd pour le système. Pourriez-vous m'indiquez comment faire avec Graphics? J'ai une image (format png) à ajouter dans mon pannel.

Je vais réexpliquer ce que je veux faire qui est pourtant plutôt simple. Je veux que mon image A monte (changer sa position) et j'insère en dessous de l'image A une image B. Voilà c'est pas plus compliqué.
0
net2e Messages postés 20 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 12 mars 2009
24 déc. 2006 à 23:25
Form dp = new form();






for
(

int
ff = 0; ff < nbrecontre_iamge_a_cree; ff++){


int
longueur;


int
largeur ;


int
locationx;


int
locationy;


string
chem ;


monPicture[ff] =

new



PictureBox
();monPicture[ff].Size =


new



Size
(largeur, longueur);




monPicture[ff].Location =




new



Point
(locationx,locationy); 




monPicture[ff].ImageLocation=chem ; 




dp.Controls.Add(monPicture[ff]);
}
0
DeathsAngel Messages postés 7 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 31 janvier 2007
25 déc. 2006 à 18:57
Merci net2e, je sais comment créer des images avec un for, là n'était pas mon problème. J'ai fait une petite capture d'écran pour vous expliquer.

J'aimerais que la petite ligne en haut (encerclé par le rouge) soit situé en dessous de la tour. Je n'ai aucun problème pour que l'image se positionne à cet endroit, le problème est qu'elle n'apparait pas!

De plus, si je créer une dizaine de picturebox cela va être très lourd pour le système et je me cherchais une méthode alternative.

Pourriez-vous m'aider.
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 déc. 2006 à 19:06
Salut,

Tu n'empillerais pas les contrôles par hasard ?
Car le fond d'un PictureNox n'est pas transparent.
Si tu veux assembler une image à partir de plusieurs, je te conseille comme Bidou de faire cet assemblage en mémoire et de n'afficher que le rendu final.
En gros tu crées une image de la taille finale, tu crées un Graphics dessus via Graphics.FromImage, tu dessines tes images dessus dans l'ordre "d'empillement" qu'elles sont censées avoir et tu affiches l'image finale.

/*
coq
MVP Visual C#
CoqBlog
*/
0
DeathsAngel Messages postés 7 Date d'inscription dimanche 24 décembre 2006 Statut Membre Dernière intervention 31 janvier 2007
25 déc. 2006 à 19:33
Ah! Merci :) c'est une meilleure idée c'est vrai! Je vais faire ça demain, car là après un la vieille de Noël on est un peu fatigué ^^

Joyeux Noël !
0
Rejoignez-nous