Direct2Dビットマップは、ハードウェアデバイスに依存するリソースであり、システムのCPU側からは一般的に簡単にアクセスできません。したがって、ID2D1Bitmap
のピクセルに到達することは困難であり、そのように使用されることも意図されていない。 Direct2Dビットマップから生のバイトを取得するメカニズムでは、通常、バイトストリームにアクセスするためにWICビットマップを作成して、そのようにします。この方法で、ファイルまたはバイト配列に書き込むことができ、C#でそれにアクセスするためにinteropを使用することができます。ファイルに書き込んでWPFで読み込みたい場合は、このメカニズムが有効です。処理中にしばらくの間にIWICBitmapSource
オブジェクトにビットマップデータがあり、それをキャッシュすることができれば、作業はより簡単になります。 System.Drawing.Bitmap
をSystem.Windows.Media.ImageSource
に変換してください。Converting Bitmap to ImageSource(@MSLに感謝の意を表します)。
この時点で、使用方法は少し不明です。意図した用途や短いサンプルに関する情報が実際に役立つでしょう。
EDIT 1:Save ID2D1Bitmap to fileとファイルにID2D1Bitmap
を節約するコードのバージョンのコメント: は、このSO Qnのを見てみましょう。基本的にIWICBitmap
に変換してファイルに書き出します。このステップではIWICBitmap
がIWICBitmapSource
から継承されているので、CopyPixels()
メソッドを使用して、ビットマップデータをバイト配列にダンプすることもできます。今
あなたがSystem.Drawing.Bitmap
を取得し、それをファイルに保存するアプローチを行っている場合は、同じくらい簡単です:
bitmap = new Bitmap("<YOUR_BITMAP_FILENAME>")
そして、あなたはとWPFで使用するためのBitmapImageに変換することができます
using(MemoryStream memstream = new MemoryStream())
{
bitmap.Save(memstream, ImageFormat.Bmp);
memstream.Position = 0;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memstream;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
}
これはおそらくあなたを助けることができます。 [BitmapをImageSourceに変換する](http://stackoverflow.com/questions/26260654/wpf-converting-bitmap-to-imagesource) – MSL
これを見たことがありますか:https://github.com/Microsoft/WPFDXInterop私たちが演奏できるサンプルコードがありますか? –
あなたは助けようとしている人に答えてみませんか? –