双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

Image控件的BitmapSource加载WriteableBitmap速度慢

GaoAlex123456 GaoAlex123456 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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帧。这是什么原因,如何解决

...全文
评论
收藏 已收藏
分享
返回顶部
GaoAlex123456
WPF/Silverlight 8,757 成员 12,031 内容