2
我可以輕鬆地創建使用下面的代碼資源JPG圖像文件的BitmapImage ...如何使用C++ for Windows Metro應用程序從資源圖像創建WritebleBitmap?
Windows::Foundation::Uri^ uri = ref new Windows::Foundation::Uri(L"ms-appx:///Hippo.JPG");
Imaging::BitmapImage^ image = ref new Imaging::BitmapImage(uri);
但WritableBitmap不採取URI。我看到一個SetSource方法,但需要一個IRandomaccessStream而不是Uri。我不知道如何從JPG文件創建一個。我一遍又一遍地搜索網絡,但找不到一個簡單的答案。任何幫助將不勝感激。
我想是這樣的......
Windows::UI::Xaml::Media::Imaging::WriteableBitmap image = ref new Windows::UI::Xaml::Media::Imaging::WriteableBitmap();
image->SetSource(somehowGetRandomAccessStreamFromUri);
但是,我如何才能從一個URI的IRandomaccessStream實例?我今天才開始研究C++ Metro應用程序,因此可能是錯誤的,但我發現它太過複雜,太多的洋蔥剝皮。
感謝菲利普,它的工作就像一個魅力。儘管如此,我不得不做一點小改變。由於某些原因,我得到一個無效的參數異常,將L「Assets \\ MyImage.jpg」更改爲L「MyImage.jpg」。 – abix 2012-07-22 02:46:55
終於搞清楚了,WritableBitmap的像素內容既不可讀也不可寫:(我可以得到一個IBuffer指針,它不提供對它緩衝區的訪問!不管怎麼說,這是一個單獨的問題,在一起 – abix 2012-07-22 05:05:09
@abix在C#中,我使用了[AsStream ](http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.windowsruntime.windowsruntimebufferextensions.asstream(v = vs.110).aspx#Y0)方法將緩衝區轉換爲I/O流。它必須在C++中可行。請檢查C#示例[here](http://bit.ly/WinRTXamlToolkit)。 – 2012-07-22 10:29:36