有没有办法将 Windows.UI.Xaml.Media.Imaging.BitmapSource 对象转换为实现 Microsoft.Graphics.Canvas.ICanvasImage 的类的成员?接口本身只包含两个获取矩形的方法。但是,我认为这还不够,因为我的最终目标是打电话
CanvasDrawingSession.DrawImage()
我不得不想象需要一种方法来获取位图像素。
有没有办法将 Windows.UI.Xaml.Media.Imaging.BitmapSource 对象转换为实现 Microsoft.Graphics.Canvas.ICanvasImage 的类的成员?接口本身只包含两个获取矩形的方法。但是,我认为这还不够,因为我的最终目标是打电话
CanvasDrawingSession.DrawImage()
我不得不想象需要一种方法来获取位图像素。
您无法从 Windows.UI.Xaml.Media.Imaging 获取像素。直接位图图像。但是您可以使用WriteableBitmap而不是 BitmapImage。然后您可以通过其PixelBuffer属性获取像素数据。
之后,您可以使用CanvasBitmap.CreateFromBytes()
方法创建 CanvasBitmap。然后使用这个 CanvasBitmap 对象作为参数来调用CanvasDrawingSession.DrawImage()
方法。
除了上面 Xavier Xie所描述的使用PixelBuffer之外,您还可以使用SoftwareBitmap来创建您的ICanvasImage。如果你有一个流,那么你可以这样做:
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
CanvasDrawingSession.DrawImage(await decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Rgba16, BitmapAlphaMode.Premultiplied));