【问题标题】:WPF shows same lines differentlyWPF 以不同方式显示相同的行
【发布时间】:2017-10-05 16:33:14
【问题描述】:

我画 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%,但看起来还是一样。

如何解决?有人经历过吗?

【问题讨论】:

  • 我已经尝试过您的代码,但无法重现您的场景。你试过在另一台机器上运行代码吗?
  • 不,但@megadan 的回答解决了它。

标签: wpf graphics


【解决方案1】:

尝试在您的Canvas 上启用SnapsToDevicePixels

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

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

【讨论】:

    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多