动态在运行时设置picturebox imagelocation?

时间:2011-03-28 06:22:09

标签: c# .net winforms controls picturebox

这里我想设置像这样的图像位置:

pic1.ImageLocation = "";
pic2.ImageLocation = "";

依旧......

foreach (ImageResult result in response.Image.Results)
{
    i++;
    PictureBox thumnailBox = new System.Windows.Forms.PictureBox();
    thumnailBox.Name = "pic" + i.ToString();
    //HOW TO DO ??
    //thumnailBox.ImageLocation = result.Thumbnail.Url;
    //listView1.Items.Add(thumnailBox.Name);                     
}

2 个答案:

答案 0 :(得分:0)

您的问题是您可能会将所有图片框彼此重叠。您需要设置PictureBox的实际位置(可能还有它们的大小),使它们不会彼此完全或部分重叠。

这可以通过代码thumbnailBox.Location = new Point(x,y);完成,其中x和y是整数。

如前所述,不要忘记更改thumbnailBox.Size

更新:另一个问题可能是你需要通过以下方式创建PictureBoxes数组:

PictureBox[] thumbnailBoxes = new PictureBox[numPics];

并在设置图像和位置时进行迭代。

然后,在循环外部,通过执行Controls.AddRange(thumbnailBoxes);

将整个数组添加到控件中

答案 1 :(得分:0)

我知道你想做什么,你想在列表视图中显示每个图像吗?

您需要添加一个imagelist控件来存储所有图像,然后将每个listview项链接到存储的图像。

    // add imagelist and listview controls
    ImageList imglist = new ImageList( this.components);
    ListView lst = new ListView();
    lst.LargeImageList = imglist;
    this.Controls.Add(lst);

设置您需要的控件。然后在循环中将图像加载到图像列表中,给它一个键,然后在列表项中使用该键:

    for (int i = 0; i < 0; i++)
    {
        imglist.images.add(image.fromfile("the-filename.jpg"));
        listviewitem itm = new listviewitem();
        string key = string.format("pic{0}", i);
        itm.text = key;
        itm.imagekey = key;
        lst.items.add(itm);
    }

这是伪代码,当然它不会按原样编译,但你明白了吗?