我想将一个网格(和他所有的孩子一起)导出到PNG。问题是这些孩子中的一些人不在网格之内。这是我的代码:
VisualBrush sourceBrush = new VisualBrush(MyGrid);
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawRectangle(sourceBrush, null, new Rect(new Point(0, 0), new Point(Math.Floor(exportWidth), Math.Floor(exportHeight))));
drawingContext.Close();
}
RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)Math.Floor(exportWidth), (int)Math.Floor(exportHeight), 96, 96, PixelFormats.Default);
renderTarget.Render(drawingVisual);
如果至少有一个孩子在网格之外,则生成的图像会模糊。
exportHeight和exportWidth值是相对于网格子项的位置在上游计算的。如果所有孩子都在网格内,则图片清晰。我认为这是因为VisualBrush原始大小无法更改。你知道解决这个问题的方法吗?
编辑:我不调用renderTarget.Render(MyGrid);因为它不负责网格之外的孩子(顶部或左侧值为负的儿童)。
你有没有尝试过?
MyGrid.ClipToBounds = true;