VisualBrush大小和拉伸问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VisualBrush大小和拉伸问题相关的知识,希望对你有一定的参考价值。
我想将一个网格(和他所有的孩子一起)导出到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;
以上是关于VisualBrush大小和拉伸问题的主要内容,如果未能解决你的问题,请参考以下文章
WPF - 带OpacityMask / VisualBrush的边框:内存泄漏
WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围
WPF 如何获取有哪些 VisualBrush 用了某个控件