在运行时添加PictureBoxes

时间:2017-10-15 12:54:59

标签: c# winforms

我正在为学校项目创建一个小型WindowsForm骰子游戏,其中一个规格是在障碍物的文本文件中读取它们的位置以及要移回多少空间。我已成功将包含此信息的文本文件读入锯齿状数组中,现在我需要生成PictureBoxes作为障碍物。代码编译很好,一切似乎都在工作,但PictureBoxes没有出现在我的表单中。 x和y值是正确的并且在表单内。 if语句用于检查障碍物是向前还是向后发送玩家并相应地更改图像。

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);

我有什么明显的遗失吗?

感谢您的帮助,

约什

2 个答案:

答案 0 :(得分:0)

图片可能无法完整显示,只需设置SizeMode即可试用:

obstacle.SizeMode = PictureBoxSizeMode.Zoom

答案 1 :(得分:0)

添加obstacle.SizeMode = PictureBoxSizeMode.Zoom解决了这个问题。

以下是感兴趣的人的最终代码:

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();

感谢您的帮助,

约什