8,758
社区成员




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