TextBlock text = new TextBlock();
text.Text = "WATER MARK";
text.Width = 150;
text.Height = 50;
text.TextWrapping = TextWrapping.Wrap;
Grid grid = new Grid();
grid.Height = 50;
grid.Width = 150;
RowDefinition rowDefinition = new RowDefinition();
rowDefinition.Height = new GridLength(50, GridUnitType.Auto);
grid.RowDefinitions.Add(rowDefinition);
Grid.SetRow(text, 0);
grid.Children.Add(text);
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(grid);
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
这里我试图保存添加了文本块的网格。但是我得到的一个例外是值不在RenderAsync()范围内。
即使我保存了添加了图像和文本块的网格,我也会遇到相同的异常。
当我试图保存在XAML中定义的网格时,我没有得到任何异常。 但是如何保存以编程方式定义的网格。
答案 0 :(得分:0)
要呈现为UIElement
需要的RenderTargetBitmap
位于可视树中(已呈现)。
以下是官方documentation直接发表的一些评论:
树中但其可见性设置为折叠的内容不会被捕获。
未直接连接到XAML可视树的内容和主窗口的内容不会被捕获。这包括弹出内容,它被视为子窗口。
对于Windows Phone应用商店:WebView控件的内容无法呈现到RenderTargetBitmap中。
无法捕获的内容在捕获的图像中显示为空白,但同一视觉树中的其他内容仍然可以捕获并呈现(无法捕获的内容的存在赢得& #39; t使该XAML组合的整个捕获失效。)
可以捕获XAML可视树中但在屏幕外的内容,只要它不是Visibility = Collapsed或在其他受限制的情况下。
对于您的问题,我建议您在XAML中创建水印及其容器,但将不透明度设置为0.