如何更改Listview的现有Imagelist图像大小

时间:2017-04-08 23:08:31

标签: c#

我想在listview处于活动状态时更改图像列表图像大小并包含项目。但它似乎只影响新添加的图像,现有图像将变为空白。

这是我的代码:

public Form1()
{
    ...
    imglst_ = new ImageList();
    imglst_.ImageSize = new Size(80, 80);
    listView1.SmallImageList = imglst_;
    listView1.LargeImageList = imglst_;
    ...
}

//zoom in
//This code only affect the new added image
//the existing images will become blank
private void toolStripZoomin_Click(object sender, EventArgs e)
{
    int w = imglst_.ImageSize.Width;
    int h = imglst_.ImageSize.Height;

    w = (int)(w * 1.2);
    h = (int)(h * 1.2);

    imglst_.ImageSize = new Size(w, h);
}

1 个答案:

答案 0 :(得分:2)

ImageSize财产状态的文档:

  

在将图像添加到图像集之前设置ImageSize属性会导致图像的大小调整为指定的图像大小。

     

ImageSize属性设置为新值时,Handle为{   图像列表被重新创建。

     

因为设置ImageSize属性会导致句柄   重新创建,您应该在设置图像之前设置ImageSize   属性。当创建ImageList的句柄时,设置   设置后,代码中的ColorDepthImageSize属性   图像属性,将导致为图像集合收集   要删除的图像属性。

因此,在添加图片后无法更改ImageSize,您应在设置ImageList后再次将图片添加到ImageSize,以便在新指定的图片中绘制它们大小