首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Win2D CanvasRenderTarget转换为BitmapImage?

将Win2D CanvasRenderTarget转换为BitmapImage?
EN

Stack Overflow用户
提问于 2018-09-07 17:05:00
回答 2查看 859关注 0票数 0

我正在尝试编写一个函数,它接受我的ICanvasEffect作为参数(在我的例子中,它是一个Win2D BlendEffect),并且我想将它转换为BitmapImage,以便在UWP 图像控件中使用它:

代码语言:javascript
复制
    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方法,我可以使用它将其保存到一个流中,但是如何保存呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-16 03:54:09

弄明白了:

代码语言:javascript
复制
    using (var stream = new InMemoryRandomAccessStream())
    {
        await target.SaveAsync(stream, CanvasBitmapFileFormat.Jpeg).AsTask(ct);

        var bmp = new BitmapImage();

        stream.Seek(0);
        await bmp.SetSourceAsync(stream);
    }
票数 2
EN

Stack Overflow用户

发布于 2018-09-10 03:08:23

正如您在注释的代码中所看到的,CanvasRenderTarget有一个SaveAsync方法,我可以使用它将其保存到一个流中,但是如何保存呢?

如果要将其保存到流中,可以参考Win2D样本

有许多示例说明了如何使用CanvasRenderTarget.SaveAsync()方法。

例如,Win2D-Samples/ExampleGallery/Infrastructure/AppIconGenerator.cs#L217

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52226884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档