在ListView中显示图像

时间:2018-12-13 12:22:37

标签: c# multithreading image listview

我想加载文件中的所有图像,并将它们显示在ListView中( 图像数量约为3000)。 图片输出存在一些问题。

  1. 程序在打印图像时死了一段时间。

    • 我使用Thread,但问题仍未解决。
  2. 现在,程序将加载所有图像并将其立即输出到ListView。

    • 我要在加载后立即将其打印出来。
  3. 如果我移动“图像”滚动条,则图像会暂时显示白色,但是如果我停止滚动条,它将正确打印。

如何平滑输出图像而不变白?

private void button2_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folder = new FolderBrowserDialog();

    if(folder.ShowDialog() != DialogResult.OK)
    {
        return;
    }

    List<string> files = new List<string>();

    files.AddRange(Directory.GetFiles(folder.SelectedPath, "*.bmp"));

    ImageList img = new ImageList();
    img.ImageSize = new Size(160, 130);

    for (int index=0; index <files.Count; index++)
    {
        Image Im = Image.FromFile(files[index]);
        img.Images.Add(Im);
    }

    Thread thread = new Thread(new ThreadStart(delegate () 
    {
        this.Invoke(new Action(delegate () 
        {
            for(int index=0; index < files.Count; index++)
            {
                listView1.LargeImageList = img;
                listView1.Items.Add(files[index], index);
            }
        }));
    }));
    thread.Start();
}

0 个答案:

没有答案