【问题标题】:C# Fast load Bitmap into PictureBoxC#快速加载位图到PictureBox
【发布时间】:2016-04-29 13:22:46
【问题描述】:

我以 30 fps 的速度从相机接收位图图像,我需要在图片框中显示所有图像。
问题是 PictureBox 很慢!
我尝试实现一个启用了 DoubleBuffer 的自定义 PictureBox,但问题没有解决。
您是否有可以更快显示图像的自定义 PictureBox 或用户控件或解决方案?

附加信息:
图像分辨率为 2048x1088,灰度为 256(8 位图像)。
我使用 AForge.NET 来制作图像。

谢谢

【问题讨论】:

  • PictureBox 默认是双缓冲的。在显示图像之前关闭调整大小或找到一种快速的方法。
  • @TaW 在显示之前我已将图像调整为图片框大小。我的图片框是 1536x816 px,SizeMode 设置为 Normal。
  • 使用 SizeMode.Normal,PictureBOX 不应增加开销。正如 Sebastion 所指出的,PixelFormat 在真正快速显示位图方面确实有很大的不同。确保也将其从默认值转换为32bppPArgb!是的,转换需要时间,但在展示上节省的时间应该更多..
  • @TaW 如何将当前图像转换为 32bppPArgb?当图像在 32bppPArgb pictureBox 中时会更快吗?
  • 这应该同时做:Bitmap bmp2 = bmp.Clone(new Rectangle(Point.Empty, newSize), PixelFormat.Format32bppPArgb);

标签: c# bitmap computer-vision picturebox


【解决方案1】:

当必须调整大小以适应 PB 的客户区域时,该图像的绘制成本会很高。这很可能在您的情况下,因为您的图像非常大。它使用高质量的双三次过滤器使调整大小的图像看起来不错。虽然结果很好,但那是相当昂贵的。

为避免该费用,请在将图像分配给 Image 属性之前自行调整图像大小。使其与 PB 的 ClientSize 一样大。

这本身就会产生很大的不同。您可以做的下一件事是创建具有 32bppPArgb 像素格式的缩放位图。这种格式比其他任何格式都快 10 倍,因为它与大多数机器上的视频适配器匹配,因此不需要像素格式转换。

【讨论】:

  • 在显示之前,我已将图像调整为图片框大小。我的图片框是 1536x816 px,SizeMode 设置为 Normal。
猜你喜欢
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-03
  • 2011-08-01
  • 1970-01-01
  • 2016-03-29
  • 2010-12-06
相关资源
最近更新 更多