gpt4 book ai didi

C# picturebox 绘制速度

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:14 28 4
gpt4 key购买 nike

我发现 I. 方法比 II. 方法慢。我的应用程序进行实时图像处理。我知道 C# 对于这个目的来说并不理想,但我可以分离性能关键的东西并在 C++ 中制作它。我想知道为什么在 C# 中没有任何计算的简单位图绘图速度较慢。我的问题:在 C# 中有比我更快的方法吗?

I. C#:

void DrawImg(Bitmap b)
{
pictureBox1.Image = b;
pictureBox1.Invalidate();
}

II. C# + C++ + OpenCV

C# side:
[DllImport("MyWrapper.dll")]
static extern void showimg(IntPtr p, int x, int y);

void DrawImg(Bitmap b)
{
BitmapData d = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
showimg(d.Scan0, d.Width, d.Height);
b.UnlockBits(d);
}

C++ side:
extern "C" void __stdcall showimg(uchar* p, int x, int y)
{
Mat img; // OpenCV's Mat class
img.create(y, x, CV_8UC3);
img.data = p;
imshow( "Window1", img );
}

最佳答案

图像的 PixelFormat 很关键。今天绝大多数机器都以 32bpp 模式运行它们的视频适配器。这使得 Format32bppPArgb 比任何其他格式快 10 倍以上,包括 32bppArgb 和 24bppRgb。请确保以该格式创建图像,并在必要时进行转换。

同样非常重要的是,您以原始尺寸绘制图像。您可以在 native 代码中执行此操作,但不一定使用 PictureBox。如果需要调整图像大小,它会在图像上使用高质量插值。这需要时间。

关于C# picturebox 绘制速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com