我有许多来自外部源(未管理的 dll)的图像,这些图像将显示在 WPF 画布上。外部源渲染图像并将指针 (IntPtr) 传递回非托管内存,以及大小、步幅等。
目前,我将这些图像加载到 WriteableBitmap 中,然后在 Canvas 的 OnRender 方法中显示。WriteableBitmap 非常适合这项任务。
WriteableBitmap temp = new WriteableBitmap(ImageWidth, ImageHeight, 96, 96, PixelFormat, null);
temp.WritePixels(new Int32Rect(0, 0, ImageWidth, ImageHeight), pointerToImageData, ImageHeight * stride, (int)stride);
问题:
- WritableBitmap 是否首先将图像数据复制到另一个位置(在托管内存中)?
- 如果是这样,有没有办法直接在屏幕上渲染图像数据(例如使用 DirectX?)
- 还有其他我可以使用的提示和技巧吗?
谢谢和最好的祝愿
丹尼尔
编辑:在 Clemens 的建议后尝试:使用 BitmapSource.Create,使用这种方法会增加内存消耗到我开始怀疑该方法复制整个图像而可写位图可能不会。