将图片从网址添加到列表视图项

时间:2018-04-08 09:58:52

标签: c# winforms

我用过picturebox函数加载pictureBox1.Load(linkSlike); ,但现在我想将此图片添加到listview项目,我不知道如何从URL加载它。

for (int j = 0; j < Stan.listaStanova.Count; j++)
        {
                         listView1.Items.Add(Stan.listaStanova[j].ToString(),Stan.listaStanova[j].linkSlike);                         
        }

1 个答案:

答案 0 :(得分:1)

第1步 - 下载图像

WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData(Stan.listaStanova[j].linkSlike);
MemoryStream ms = new MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
ms.Dispose();

步骤2 - 将图像添加到图像列表

ImageList Imagelist = new ImageList(); // SHOULD BE DECLARED AT FORM LEVEL
imagelist.Images.Add(img);

步骤3 - 将列表视图分配给图像列表

listView1.LargeImageList = Imagelist;
listView1.SmallImageList = Imagelist;

步骤4 - 对于给定列表视图项(让我们说第一个,分配ImageIndex)。 ImageIndex引用数组中的位置,以在列表视图的图像列表属性中查找图像。在这个例子中,我们说的是列表视图的第一个项目,分配第一个图像的索引。

listView1.Items[0].ImageIndex = 0; 

将所有内容放在一起(同样,图像列表应在表单级别声明,因此未在示例中声明:

listView1.LargeImageList = Imagelist;
listView1.SmallImageList = Imagelist;

for (int j = 0; j < Stan.listaStanova.Count; j++)
{

     WebClient wc = new WebClient();
     byte[] bytes = wc.DownloadData(Stan.listaStanova[j].linkSlike);
     MemoryStream ms = new MemoryStream(bytes);
     System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
     imagelist.Images.Add(img);
     ms.Dispose();

     // IN THIS CASE, WE'RE ASSUMING EACH LIST ITEM HAS A DISTINCT IMAGE
     // SO COUNT OF IMAGE COLLECTION IS SAME AS LISTVIEWITEMCOLLECTION
     // SO IMAGEINDEX PROPERTY IS ALWAYS THE J
     listView1.Items.Add(Stan.listaStanova[j].ToString(),j);                         
}