Image控件的BitmapSource加载WriteableBitmap速度慢

GaoAlex123456 2025-08-13 15:43:45

WriteableBitmap是相机采集的IntPtr来转换的

internal WriteableBitmap CreateBitmap(WriteableBitmap bitmap, int width, int height, IntPtr ptr)
        {
            try
            {
                byte[] rgbData = new byte[width * height * 3];
                Marshal.Copy(ptr, rgbData, 0, rgbData.Length);
                if(bitmap == null ) return null;
                bitmap.Lock(); 
                bitmap.WritePixels(new Int32Rect(0, 0, width, height), rgbData, width * 3, 0);
                bitmap.AddDirtyRect(new Int32Rect(0, 0, width, height)); 
                bitmap.Unlock(); 
                return bitmap;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return null;
            }
        }

图片是双屏幕显示的

ShowImage.Source = MicroscopeCamera.Instance.writeableBitmap;
seconDivest.ShowImage.Source = MicroscopeCamera.Instance.writeableBitmap;

1080p的画面,这时帧率只有19帧每秒,如果去掉一个屏幕显示就能达到预期的30帧每秒

而且还发现一个问题就是使用VS Debug直接F5运行后双屏也能达到预期的30帧每秒,但是使用Ctrl + F5运行就不行,最多只能达到19帧。这是什么原因,如何解决

...全文
39 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
【源码免费下载链接】:https://renmaiwang.cn/s/gme2t 在Windows Presentation Foundation (WPF) 中,WriteableBitmap 是一个非常重要的类,它允许开发者将位图作为可写的像素数组来处理。这个类是用于直接操作图像像素,从而实现高效地处理图片和视频流。在本示例中,我们将探讨如何使用WriteableBitmap来处理图片流视频,并绑定到Image控件,以降低CPU负载并提高性能。我们需要理解WriteableBitmap的基本用法。WriteableBitmap提供了一个二维像素数组,通过WritePixels方法,我们可以直接修改这些像素的值。这使得我们可以高效地更新图像内容,尤其是在处理实时视频流时,可以避免频繁创建新的BitmapSource对象,从而减少内存和CPU的开销。1. **创建WriteableBitmap对象** 在WPF中,我们可以创建一个WriteableBitmap对象,指定宽度、高度以及像素格式。例如: ```csharp WriteableBitmap wb = new WriteableBitmap(width, height, dpiX, dpiY, PixelFormats.Bgra32, null); ``` 这里,dpiX和dpiY代表分辨率,PixelFormats.Bgra32表示每个像素4个字节,包含透明度(Alpha)、蓝色(Blue)、绿色(Green)和红色(Red)通道。2. **绑定到Image控件** 我们可以通过设置Image控件Source属性,将其数据源绑定到WriteableBitmap对象,如下所示: ```csharp Image imageControl = new Image(); imageControl.Source = wb

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧