基本上,我想画一些1px笔画宽度的行。 但是,即使我将笔画宽度的值设置为1,行也覆盖了2个像素。 所以我用Google搜索并了解了别名和反别名渲染。 现在,解决方案我找到了完全匹配问题here,这个问题的答案来自这两行:
myLine.SnapsToDevicePixels = true;
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
但这些方法很可能已过时,因为它显示错误
Line类Windows.UI.Xaml.Shapes
没有这些属性或方法。
我也试过这个:
myLine.UseLayoutRounding = false;
但那并没有奏效。这里有什么帮助吗?
答案 0 :(得分:1)
如果您尝试绘制具有X和Y坐标的线,则坐标定义线的中心。
所以我假设您将Line定义为:
StrokeThickness
这导致线的中心在两个像素之间(从顶部到像素9和10)。因此渲染总是发生在相邻的像素中(因此,至少在理论上,导致每个奇数StrokeThickness / 2
的模糊/更宽的线)。
要解决此问题,请尝试将myLine.StrokeThickness = 1;
myLine.Y1 = 10.5;
myLine.Y2 = 10.5;
myLine.X1 = 0;
myLine.X2 = 50;
添加到Y坐标。因此,在本例中,您可以通过设置以下值来解决它:
<button>Toggle Me</button>
<h1>My First Line</h1>
<h2>The Second Line</h2>
<p>This is a paragraph.</p>
<span>This is a span.</span>
如果您尝试绘制垂直线,则应用于X轴坐标。