我用过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);
}
答案 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);
}