【发布时间】:2011-04-06 19:21:54
【问题描述】:
我已经看到了几个在 WPF 中渲染 1 像素线的示例,但似乎没有一个适用于我的情况。我正在使用 DrawingVisual 和 DrawingContext 来绘制一些形状,并使用 RenderTargetBitmap 和 PngBitmapEncoder 来生成图像。在许多情况下,即使我将其设置为 1,矩形也有 2 个像素的边框。我猜这是由于使用了与分辨率无关的渲染。
我找到了几个解决方案,但它们要么在 XAML 中,要么适用于绘图控件。我发现的最接近的东西是 XSnappingGuidelines/YSnappingGuidelines,但我找不到一个如何使用它的示例。这些属性的文档非常缺乏。
如何禁用 DrawingVisual 的分辨率无关渲染?
更新: 这是我想要做的:
声明一个绘图视觉对象:
DrawingVisual mainTemplate = new DrawingVisual();
获取上下文:
using (DrawingContext context = mainTemplate.RenderOpen())
画矩形:
penToUse = new Pen(new SolidColorBrush(Color.FromRgb(0xFF, 0xFF, 0xFF)), 1.0);
penToUse.DashStyle = DashStyles.Dash;
context.DrawRectangle(brushToUse, penToUse, new Rect(left, top, width, height));
在哪里设置渲染模式以对齐像素?
jorj
【问题讨论】:
-
如果你能发布一些示例代码会很有帮助。
-
请注意,XAML 中可能发生的任何事情在代码中也可能发生。
-
当您使用矩形时,您是否将 BorderThickness 设置为仅使用一侧?像“0,1,0,0”。否则你会得到所有的侧面。