我正在尝试在不在可视树中的图像上使用以下代码:
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可以让我解决这个问题。但是,这似乎给出了同样的错误。
我的假设是正确的,这将允许我渲染不在可视化树中的图像(帮助文件似乎暗示其他情况),如果没有,是否有另一种方法来执行此类任务没有将图像添加到页面?
答案 0 :(得分:0)
我遇到了同样的问题。我设法解决它的唯一方法是将元素添加到可视树中,然后将其删除。 看一下这个RenderTargetBitmap in Windows Phone Unit Test App