以下代码从 RenderAsync 方法“值不在预期范围内”引发了一个神秘的 System.ArgumentException。另一方面,如果我的 Canvas 是可见 XAML 树的一部分,它就可以工作。是否无法呈现一些未显示在屏幕上的 XAML?
Canvas c = new Canvas();
c.Width = 40;
c.Height = 40;
c.Background = new SolidColorBrush(Color.FromArgb(0xff, 0x80, 0xff, 0x80));
RenderTargetBitmap x = new RenderTargetBitmap();
await x.RenderAsync(c);
我几乎认为这个答案会起作用,但没有运气,我猜它只适用于 WPF:Create WPF element offscreen and render to bitmap
更新:
到目前为止,我最好的想法是将要渲染的 Canvas 放入当前可见的页面中,但将其放置在通常填充屏幕的根 UIElement 下方,这样用户就看不到它了:
<Grid>
<Canvas x:Name="HiddenCanvas"/>
<Grid x:Name="mainElement" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
</Grid>
</Grid>
它并不漂亮,但似乎有效。让我们看看是否有人可以做得更好