Direct2D位圖是硬件設備相關資源,通常不易從系統的CPU端訪問。因此,到達ID2D1Bitmap
的像素是困難的,但它的設計既非旨在以這種方式使用。從Direct2D位圖獲取原始字節的任何機制通常都是通過創建一個WIC位圖來訪問字節流來實現的。這樣你就可以把它寫入一個文件甚至一個字節數組中,並使用一些互操作來在C#中訪問它。如果你想把它寫入一個文件並在WPF中讀取,這個機制就可以工作。如果您在處理過程中的某個時間在IWICBitmapSource
對象中擁有位圖數據,並且您可以緩存該對象,則該作業將更容易。 將System.Drawing.Bitmap
轉換爲System.Windows.Media.ImageSource
的答案在這裏:Converting Bitmap to ImageSource(感謝@MSL誰在評論中指出了上述答案)。
在這一點上,你使用它的方式有點不清楚,關於預期用途或短樣本的更多信息會對此有所幫助。
編輯1: 看看這個SO QN:Save ID2D1Bitmap to file和版本的代碼,節省了ID2D1Bitmap
到一個文件中的註釋。它基本上轉換爲IWICBitmap
並將其寫入文件。在這一步,由於IWICBitmap
繼承自IWICBitmapSource
,如果您願意,您甚至可以使用CopyPixels()
方法將位圖數據轉儲到字節數組中。
現在,如果你用它保存到文件,得到一個System.Drawing.Bitmap
的做法會是這麼簡單:
bitmap = new Bitmap("<YOUR_BITMAP_FILENAME>")
而且你可以將其轉換爲BitmapImage的用在WPF爲:
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();
}
也許這可以幫助你。 [轉換位圖爲ImageSource](http://stackoverflow.com/questions/26260654/wpf-converting-bitmap-to-imagesource) – MSL
你見過這個:https://github.com/Microsoft/WPFDXInterop,你呢有我們可以玩的示例代碼? –
你爲什麼不回答試圖幫助的人? –