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水平对齐左和拉伸?

WPF 如何获取有哪些 VisualBrush 用了某个控件

在winform画了一个自定义控件,现在我要在运行后进行拉伸动态改变大小,但快速拉伸就闪烁,怎么消除

从定义了宽度和高度的代码中拉伸网格