WPF キャンバスに表示される外部ソース (umnanaged dll) から多くの画像を取得しました。外部ソースは画像をレンダリングし、ポインター (IntPtr) を umnanaged メモリ、サイズ、ストライドなどに返します。
現在、これらの画像を 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 を使用して、このメソッドを使用すると、メソッドがイメージ全体をコピーし、書き込み可能なビットマップがコピーされない可能性があると思われるポイントまでメモリ消費が増加します。