В WinRT C # как сохранить внеэкранное дерево XAML с помощью RenderTargetBitmap?
Следующий код выдает загадочное System.ArgumentException из метода RenderAsync «Значение не попадает в ожидаемый диапазон». С другой стороны, если мой 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:Создать WPF-элемент вне экрана и рендерить в растровое изображение
ОБНОВИТЬ:
Пока что моя лучшая идея - поместить Canvas, на котором я хочу сделать рендеринг, на видимую в данный момент страницу, но расположить его под тем корневым UIElement, который заполняет экран, чтобы он не был виден пользователю:
<Grid>
<Canvas x:Name="HiddenCanvas"/>
<Grid x:Name="mainElement" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
</Grid>
</Grid>
Это не красиво, но, похоже, работает. Посмотрим, сможет ли кто-нибудь добиться большего