当前位置: 首页 > 编程语言 > C#

更快地显示图片框Share

时间:2023-04-10 19:47:43 C#

更快地显示图片框在我将位图分配给图片框和显示位图之间有0.13秒的延迟。每当我执行picturebox.refresh()时,它都会延迟0.13-0.15秒,然后再调用paint方法。有没有办法摆脱这种延迟?我在VisualStudio2010中使用C#。我使用FreeImage库加载图像。这是我的pictureBox_MouseMove事件中的代码:图片框.刷新();然后我在绘制事件称为Wire时跟踪一条线。延迟在两条迹线之间。如果我使用117kb的双色调tiff图像,则延迟为0.13秒。将此图像加载到内存中需要0.04秒。用这个位图替换我的图片框位图需要0.01秒。如果我使用1125kb的灰度jpg图像,则延迟为0.14秒。将此图像加载到内存中需要0.26秒。用这个位图替换我的图片框位图需要0.33秒。假设您的代码中没有其他延迟阻止UI线程重新进入消息循环,以便可以调用OnPaint()方法:在PictureBox绘制图像后调用Paint事件处理程序。暂时还看不出来,PB用的是双缓冲。当必须调整大小以适应PB的客户区域时,绘制该图像的成本很高。在您的情况下,很可能是因为您的图像非常大。它使用高质量的双三次滤镜,使调整后的图像看起来不错。这是非常昂贵的,尽管结果很好。为避免此成本,请在将图像分配给Image属性之前自行调整图像大小。让它和PB的ClientSize一样大。这本身就可以产生很大的不同。接下来,您可以使用32bppPArgb像素格式创建缩放位图。它的格式比任何其他格式快10倍,因为它与大多数机器上的视频适配器匹配,所以不需要像素格式转换。一些代码:privatevoidloadImage(stringpath){using(varsrce=newBitmap(path)){vardest=newBitmap(pictureBox1.Width,pictureBox1.Height,System.Drawing.Imaging.PixelFormat.Format32bppPArgb);使用(vargr=Graphics.FromImage(dest)){gr.DrawImage(srce,newRectangle(Point.Empty,dest.Size));}if(pictureBox1.Image!=null)pictureBox1.Dispose();pictureBox1.Image=dest;}}你可能想要修补它,以便图像保持其纵横比。首先尝试以确保您获得性能改进。以上就是C#学习教程:更快显示相框分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: