Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当用户控件显示给用户时,在图片框中加载图像_C#_Winforms_Picturebox - Fatal编程技术网

C# 当用户控件显示给用户时,在图片框中加载图像

C# 当用户控件显示给用户时,在图片框中加载图像,c#,winforms,picturebox,C#,Winforms,Picturebox,我想用用户控件以一种形式显示很多图像,但是速度很慢,占用了很多系统内存 当用户控件显示给用户时,如何在图片框中加载图像 我编写了这个示例代码。它适用于700幅图像,但我仍在寻找最佳解决方案 Bitmap myBitmap; Image myThumbnail; foreach (var item in queryMatchingFiles) { Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAb

我想用用户控件以一种形式显示很多图像,但是速度很慢,占用了很多系统内存

当用户控件显示给用户时,如何在图片框中加载图像

我编写了这个示例代码。它适用于700幅图像,但我仍在寻找最佳解决方案

Bitmap myBitmap;
Image myThumbnail;

foreach (var item in queryMatchingFiles)
{
    Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
    myBitmap = new Bitmap(item);
    myThumbnail = myBitmap.GetThumbnailImage(120, 183, myCallback, IntPtr.Zero);

    flowLayoutPanel1.Controls.Add(new PictureBox {
        Image = myThumbnail,
        Width = 120,
        Height = 183,
        BackgroundImageLayout = ImageLayout.Stretch
    });

    count++;
    myBitmap = null;
    myThumbnail = null;
}

public bool ThumbnailCallback()
{
    return false;
}

速度非常慢,占用了大量系统内存
很有可能原始图像的分辨率远远高于当前显示的分辨率。如果是这样,请在内存或磁盘上相应地调整它们的大小。使用缩略图渲染图像集,并仅在选择一个图像时加载完整图像。