2012-08-15 64 views
1

当我试图为包含PictureBox和ImageList的用户控件设置位置时,只有部分图片可见!?哪里不对?对于位置,我猜像素是我可以使用的?图片框的位置和用户控件的动态创建

pictureBox1.Location = new Point(10, 20); 
pictureBox1.Image = imageList1.Images[3]; 

然后我也想知道我怎么可以创建多个用户控件,像我上面的描述,在运行时,像某种动态创建的!?我想为每个用户控件设置不同的图像和位置。该创建应该在另一个用户控件内部进行,并且包含一个大面板。我不知道我应该怎么做,以及如何在两个用户控件之间进行通信?就像将值传递给这些用户控件的方法和构造函数一样?

有点帮助解决这个问题!谢谢!

编辑:我正在尝试此代码,但我不能找到它不工作的原因?

pictureBox1.Size = new System.Drawing.Size(79, 91); 
pictureBox1.Location = new Point(10,10); 
pictureBox1.Image = imageList1.Images[3]; 

我仍然只得到部分图像。为什么下面的代码工作并显示100%的图像很奇怪?

pictureBox1.Image = imageList1.Images[2]; 

回答

0

看一看在图片框的SizeMode属性,则可能需要将其设置为StretchImage以适应您的图像分辨率为您的图片框的大小。

至于动态创建控件,是的,你可以,只需在designer.cs中查看代码,看看在设计时如何为控件生成代码。

1
PictureBox[] pics = new PictureBox[10]; 

     int size = 20; 
     for (int i = 0; i < 10; i++) 
     { 
      pics[i] = new PictureBox(); 
      pics[i].Size = new System.Drawing.Size(size, size); 
      pics[i].Location = new Point(size * 2 * i + 10, size); 
      //pics[i].Image = image 
      pics[i].BackColor = Color.AliceBlue; 
      pics[i].Parent = this; 
     } 

和您可以使用嵌套的for循环的图片框2D行:

PictureBox[,] pics = new PictureBox[10,10]; 

     int size = 20; 
     for (int i = 0; i < 10; i++) 
     { 
      for (int j = 0; j < 10; j++) 
      { 
       pics[i, j] = new PictureBox(); 
       pics[i, j].Size = new System.Drawing.Size(size, size); 
       pics[i, j].Location = new Point(size * 2 * i + 10, size * 2 * j + 10); 
       //pics[i,j].Image = image 
       pics[i, j].BackColor = Color.AliceBlue; 
       pics[i, j].Parent = this; 
      } 
     }