我想将一个网格(他所有的孩子)导出到 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); 因为它不负责网格外的孩子(上或左值为负的孩子)。