我正在嘗試編寫一個函數(shù),它接受我的ICanvasEffect作為參數(shù)(在我的情況下是 Win2D BlendEffect),并且我想將CanvasRenderTarget轉(zhuǎn)換為BitmapImage以便我可以在 UWP Image控件中使用它: private async Task<BitmapImage> GetBitmapImage(CancellationToken ct, ICanvasImage effect) { using (var target = new CanvasRenderTarget(CanvasDevice.GetSharedDevice(), 320f, 240f, 96)) { using (var ds = target.CreateDrawingSession()) { // Draw the image with the supplied ICanvasImage ds.DrawImage(effect); } //await target.SaveAsync(outputStream, CanvasBitmapFileFormat.Jpeg).AsTask(ct); } }正如您在注釋代碼中看到的那樣,CanvasRenderTarget有一個SaveAsync方法,我可以使用它來將其保存到 Stream,但是如何?
2 回答

開心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊
弄清楚了:
using (var stream = new InMemoryRandomAccessStream())
{
await target.SaveAsync(stream, CanvasBitmapFileFormat.Jpeg).AsTask(ct);
var bmp = new BitmapImage();
stream.Seek(0);
await bmp.SetSourceAsync(stream);
}

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊
正如您在注釋代碼中看到的那樣,CanvasRenderTarget 有一個 SaveAsync 方法,我可以使用它來將其保存到 Stream,但是如何?
如果您想將其保存為流式傳輸,您可以參考Win2D 示例。
有很多示例展示了如何使用CanvasRenderTarget.SaveAsync()方法。
例如,Win2D-Samples/ExampleGallery/Infrastructure/AppIconGenerator.cs#L217
- 2 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消