如何防止颜色混合?

9
考虑以下示例:
<Grid  HorizontalAlignment="Stretch" VerticalAlignment="Top">
    <Line Stroke="Red" X1="0" X2="100" Y1="50" Y2="50"/>
    <Line Stroke="Red" X1="50" X2="50" Y1="0" Y2="100"/>
</Grid>

尽管两行都使用了SolidColorBrush,而且opacity=1,仍会发生颜色混合:交点处的像素为较暗的红色。

为什么会这样,我该如何防止这种情况?

谢谢!

P.S 这里提供了同一代码的另一个示例,其中明确定义了brushes:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top">
    <Grid.Resources>
        <Style TargetType="{x:Type Line}">
            <Setter Property="Stroke">
                <Setter.Value>
                    <SolidColorBrush Color="Red" Opacity="1" />
                </Setter.Value>
            </Setter>
        </Style>
    </Grid.Resources>

    <Line X1="0" X2="100" Y1="50" Y2="50" />
    <Line X1="50" X2="50" Y1="0" Y2="100" />
</Grid>
1个回答

8

您可能需要了解一下像素对齐。这是WPF的一个功能,可以在渲染时提供额外的粒度。例如,如果我们取一个Line并应用此功能:

<Line X1="0" X2="100" Y1="50" Y2="50" SnapsToDevicePixels="True"/>

作为这样做的一个例子,这里有一张来自链接文章的图片: enter image description here

2
哦,天啊,这已经是第二次我的问题的答案是SnapsToDevicePixels了。我真的应该更加关注这个属性。谢谢!! - VitalyB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接