2017-10-15 4 views
0

Je suis en train de créer un petit jeu de dés WindowsForm pour un projet d'école et l'une des spécifications est de lire dans un fichier texte des obstacles avec leurs positions et le nombre d'espaces pour reculer. J'ai lu avec succès le fichier texte contenant cette information dans un tableau dentelé et j'ai maintenant besoin de générer des PictureBoxes pour agir comme des obstacles. Le code compile bien et tout semble fonctionner, mais les PictureBox ne sont pas visibles dans mon formulaire. Les valeurs x et y sont correctes et à l'intérieur du formulaire. L'instruction if vérifie si l'obstacle envoie le joueur en avant ou en arrière et change l'image en conséquence.Ajouter des PictureBox pendant l'exécution

int obstacleX = Convert.ToInt32(lbl.Location.X) - 14; 
int obstacleY = Convert.ToInt32(lbl.Location.Y) + 6; 
PictureBox obstacle = new PictureBox(); 
if (Library.GlobalVariables.obstacleStats[i][1] < 0) 
{ 
    obstacle.Image = Properties.Resources.badObstacle; 
} 
else 
{ 
    obstacle.Image = Properties.Resources.goodObstacle; 
} 
obstacle.Location = new Point(obstacleX, obstacleY); 
obstacle.Size = new Size(17, 17); 
obstacle.Show(); 
this.Controls.Add(obstacle); 

Y at-il quelque chose d'évident qui me manque?

Merci pour votre aide,

Josh

+0

Vous devez redessiner l'écran pour afficher les nouveaux objets. – nocturns2

+0

Comment redessiner l'écran? this.Refresh() ne semble pas avoir d'effet. –

+0

Ajoutez obstacle.BringToFront(), dans le cas où la boîte de pb est chevauchée par un autre contrôle. –

Répondre

0

L'image ne peut pas être complètement affichée, juste régler la SizeMode d'avoir un essai:

obstacle.SizeMode = PictureBoxSizeMode.Zoom 
0

Ajout obstacle.SizeMode = PictureBoxSizeMode.Zoom a résolu le problème.

Voici le code final pour les personnes intéressées:

int obstacleX = Convert.ToInt32(lbl.Location.X) - 14; 
int obstacleY = Convert.ToInt32(lbl.Location.Y) + 6; 
PictureBox obstacle = new PictureBox(); 
if (Library.GlobalVariables.obstacleStats[i][1] < 0) 
{ 
    obstacle.Image = Properties.Resources.badObstacle; 
} 
else 
{ 
    obstacle.Image = Properties.Resources.goodObstacle; 
} 
obstacle.Location = new Point(obstacleX, obstacleY); 
obstacle.Size = new Size(17, 17); 
obstacle.SizeMode = PictureBoxSizeMode.Zoom; 
this.Controls.Add(obstacle); 
obstacle.Show(); 
obstacle.BringToFront(); 

Merci pour l'aide,

Josh