RenderTargetBitmap 没有把它放在 UI

RenderTargetBitmap without putting it on UI

我想在 Visual Studio 2013 年创建一个通用应用程序,它从使用代码动态生成的 Canvas 创建图像。如果我在 UI 上显示 canvas(例如,在 Grid 中)就没问题。如果我不显示 canvas,应用程序会崩溃并显示以下消息:

value does not fall within the expected range.

这是我使用的代码:

Canvas cn = new Canvas();
cn.Height = 100;
cn.Width = 100;
cn.Visibility = Visibility.Visible;
Button but = new Button();
Rectangle rect = new Rectangle();
rect.Width = 100;
rect.Height = 100;
rect.Margin = new Thickness(0);
SolidColorBrush bruch = new SolidColorBrush();
bruch.Color = Colors.Blue;
rect.Fill = bruch;
but.Width = 50;
but.Height = 50;
but.Content = "23";
but.Visibility = Visibility.Visible;
cn.Children.Add(rect);
cn.Children.Add(but);
but.Margin = new Thickness(25, 25, 0, 0);
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(cn, 100, 100);
outputImage.Source = renderTargetBitmap;

我不想在 UI 上显示 canvas,因为我打算使用来自 BackgroundTask.

的代码

这是我的 sample project

Windows Phone 应用程序可以使用 XamlRenderingBackgroundTask 在后台任务中呈现。建议后台任务使用 C++ 以保持低资源使用率。

请参阅 Updating a tile from a background task 示例。

Windows 商店应用不支持 XamlRenderingBackgroundTask。在 Windows 上,无法从后台任务使用 RenderTargetBitmap,并且要求目标 UIElement 位于主视觉树中。