有沒有辦法將Windows.UI.Xaml.Media.Imaging.BitmapSource對象轉換爲實現Microsoft.Graphics.Canvas.ICanvasImage的類的成員?接口本身只包含兩個矩形獲取方法。但是,我認爲這還不夠,我的最終目標是要叫BitmapSource的ICanvasBitmap
CanvasDrawingSession.DrawImage()
,我有想象,需要一種方式來獲得的位圖像素。
有沒有辦法將Windows.UI.Xaml.Media.Imaging.BitmapSource對象轉換爲實現Microsoft.Graphics.Canvas.ICanvasImage的類的成員?接口本身只包含兩個矩形獲取方法。但是,我認爲這還不夠,我的最終目標是要叫BitmapSource的ICanvasBitmap
CanvasDrawingSession.DrawImage()
,我有想象,需要一種方式來獲得的位圖像素。
您無法從Windows.UI.Xaml.Media.Imaging獲取像素。直接使用BitmapImage。但是您可以使用WriteableBitmap而不是BitmapImage。然後,您可以通過其PixelBuffer屬性獲取像素數據。
之後,您可以使用CanvasBitmap.CreateFromBytes()
方法來創建CanvasBitmap。然後使用此CanvasBitmap對象作爲參數調用CanvasDrawingSession.DrawImage()
方法。
除了使用PixelBuffer,如上described by Xavier Xie,你可以使用SoftwareBitmap來創建ICanvasImage。如果你有一個流,那麼你可以這樣做:
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
CanvasDrawingSession.DrawImage(await decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Rgba16, BitmapAlphaMode.Premultiplied));
你的* BitmapSource *從哪裏來? – Romasz
摔跤庫。 https://github.com/paulcbetts/splat - 讓事情變得艱難的根本問題是我正在開發多個平臺。但是,我最終認定這已經很麻煩,所以最好在Windows的情況下完全繞過BitmapSource。 –
我問,因此使用* SoftwareBitmap *而不是* BitmapSource *會更容易。因此,它可以直接從它創建* CanvasImage *。 – Romasz