【问题标题】:dynamically Setting picturebox imagelocation at run time?在运行时动态设置图片框图像位置?
【发布时间】:2011-07-24 05:50:27
【问题描述】:

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

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

【问题讨论】:

  • 有什么问题?为什么thumnailBox.ImageLocation = result.Thumbnail.Url; 不适合你?
  • 嗨 Cody Gray,我想通过其图片框 ID 设置 ImageLocation 属性,例如 pic1.ImageLocation = "rose.jpg"; pic2.ImageLocation = "lily.jpg";
  • 图片不显示?你看到错误了吗?您是否调试了代码并查看了 response.Image.Results 的值?它们是图像的有效 URL 吗?你的问题太模糊了,@jack。
  • @Wesley 我有 10 张不同的图像,并且显示了图像,但只显示了 1 张图像。我运行 foreach 循环以获取所有图像并设置图像位置路径“thumnailBox.ImageLocation = result.Thumnail.Url”并将此 thumnailBox 控件添加到 listview1.Controls.Add(thumbnail);但这仅向我展示了 1 张图片。我想在列表视图中显示所有图片。我希望你能理解我的问题

标签: c# .net winforms controls picturebox


【解决方案1】:

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

您需要添加一个 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);
    }

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

【讨论】:

  • 非常感谢韦斯利。这很有帮助,你解决了我的问题。
【解决方案2】:

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

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

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

更新:另一个问题可能是您需要创建一个图片框数组,方法是:

PictureBox[] thumbnailBoxes = new PictureBox[numPics];

并在设置图像和位置时遍历它们。

然后,在您的循环之外,通过执行 Controls.AddRange(thumbnailBoxes); 将整个数组添加到控件中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多