使用XamlRenderingBackgroundTask渲染不在可视树中的图像

时间:2016-05-24 07:05:39

标签: c# xaml uwp

我正在尝试在不在可视树中的图像上使用以下代码:

    public async Task<CanvasBitmap> RenderImage()
    {
        Image img = new Image();
        img.Source = _p._img;

        RenderTargetBitmap rtb = new RenderTargetBitmap();
        await rtb.RenderAsync(img);
        IBuffer buf = await rtb.GetPixelsAsync();
        SoftwareBitmap sb = SoftwareBitmap.CreateCopyFromBuffer(buf, BitmapPixelFormat.Rgba16, (int)_p._width, (int)_p._height);
        CanvasBitmap cb = CanvasBitmap.CreateFromSoftwareBitmap(_p._resCreator, sb);

        return cb;
    }

这给了我一个错误,我认为这是因为视觉树中不存在Image。在做了一些研究之后,我得出的结论是使用XamlRenderingBackgroundTask可以让我解决这个问题。但是,这似乎给出了同样的错误。

我的假设是正确的,这将允许我渲染不在可视化树中的图像(帮助文件似乎暗示其他情况),如果没有,是否有另一种方法来执行此类任务没有将图像添加到页面?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我设法解决它的唯一方法是将元素添加到可视树中,然后将其删除。 看一下这个RenderTargetBitmap in Windows Phone Unit Test App