【问题标题】:Converting a Win2D CanvasRenderTarget to a BitmapImage?将 Win2D CanvasRenderTarget 转换为 BitmapImage?
【发布时间】:2018-09-16 11:54:09
【问题描述】:

我正在尝试编写一个函数,它接受我的 ICanvasEffect 作为参数(在我的例子中是 Win2D BlendEffect),我想将 ICanvasEffect strong>CanvasRenderTarget 到 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,但是如何?

【问题讨论】:

    标签: c# uwp win2d


    【解决方案1】:

    想通了:

        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】:

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

      如果你想保存到流媒体,你可以参考Win2D samples

      有很多示例展示了如何使用CanvasRenderTarget.SaveAsync() 方法。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-28
        • 2017-12-03
        • 2012-12-08
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 2012-06-30
        相关资源
        最近更新 更多