WPF以不同方式显示相同的行

时间:2017-05-07 17:42:07

标签: wpf graphics

我画了X直线。相同的厚度等,但每四行看起来明显不同 - 它更薄。

<Canvas Name="Canvas">
    <Line X1="100" Y1="100" X2="500" Y2="100" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="125" X2="500" Y2="125" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="150" X2="500" Y2="150" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="175" X2="500" Y2="175" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="200" X2="500" Y2="200" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="225" X2="500" Y2="225" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="250" X2="500" Y2="250" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="275" X2="500" Y2="275" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>
    <Line X1="100" Y1="300" X2="500" Y2="300" Stroke="Black" StrokeThickness="1" RenderOptions.EdgeMode="Unspecified"/>

</Canvas>

渲染选项是别名还是未指定并不重要。两个输出都显示不相同的行。 我甚至将Windows DPI设置为100%,它看起来仍然相同。

如何修复?有人经历过这个吗?

1 个答案:

答案 0 :(得分:1)

尝试在SnapsToDevicePixels上启用Canvas

<Canvas Name="Canvas" SnapsToDevicePixels="True">

这将减少抗锯齿伪像,并确保在像素边界上绘制线条。