在Windows Phone 8.1中的图像上添加水印文本

时间:2015-08-24 13:13:48

标签: c# windows-phone-8.1

            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中定义的网格时,我没有得到任何异常。 但是如何保存以编程方式定义的网格。

1 个答案:

答案 0 :(得分:0)

要呈现为UIElement 需要RenderTargetBitmap位于可视树中(已呈现)。

以下是官方documentation直接发表的一些评论:

  

树中但其可见性设置为折叠的内容不会被捕获。

     

未直接连接到XAML可视树的内容和主窗口的内容不会被捕获。这包括弹出内容,它被视为子窗口。

     

对于Windows Phone应用商店:WebView控件的内容无法呈现到RenderTargetBitmap中。

     

无法捕获的内容在捕获的图像中显示为空白,但同一视觉树中的其他内容仍然可以捕获并呈现(无法捕获的内容的存在赢得& #39; t使该XAML组合的整个捕获失效。)

     

可以捕获XAML可视树中但在屏幕外的内容,只要它不是Visibility = Collapsed或在其他受限制的情况下。

对于您的问题,我建议您在XAML中创建水印及其容器,但将不透明度设置为0.