No WinRT C # como faço para salvar uma árvore XAML fora da tela usando RenderTargetBitmap?
O código a seguir lança um System.ArgumentException enigmático do método RenderAsync "Valor não está dentro do intervalo esperado". Se, por outro lado, meu Canvas faz parte de uma árvore XAML visível, ele funciona. É impossível renderizar algum XAML que não seja exibido na tela?
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);
Eu quase pensei que essa resposta funcionaria, mas sem sorte, acho que só se aplica ao WPF:Criar elemento WPF fora da tela e renderizar para bitmap
ATUALIZAR:
Até agora, minha melhor ideia é colocar o Canvas que desejo renderizar na página visível no momento, mas colocá-lo abaixo do que normalmente é o UIElement raiz que preenche a tela para que não fique visível para o usuário:
<Grid>
<Canvas x:Name="HiddenCanvas"/>
<Grid x:Name="mainElement" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
</Grid>
</Grid>
Não é bonito, mas parece funcionar. Vamos ver se alguém consegue fazer melhor