如何防止颜色混合?

Vit*_*lyB 8 .net c# wpf

请考虑以下示例:

<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>
Run Code Online (Sandbox Code Playgroud)

尽管两条线都具有SolidColorBrush并且两者都具有不透明度= 1,但仍然会发生颜色混合:交叉点处的像素具有较深的红色.

为什么会发生这种情况,我该如何预防呢?

谢谢!

PS这是明确定义画笔的相同代码的另一个示例:

<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>
Run Code Online (Sandbox Code Playgroud)

Gra*_*mas 7

您可能希望查看对齐像素.这是WPF的一项功能,允许在渲染中使用一些额外的粒度.如果我们采取Line并应用此:

<Line X1="0" X2="100" Y1="50" Y2="50" SnapsToDevicePixels="True"/>
Run Code Online (Sandbox Code Playgroud)

作为这个用途的一个例子,这是来自链接文章的图像:

在此输入图像描述

  • 哦,伙计,这是我第二次回答我的问题是SnapsToDevicePixels.我应该开始更多地关注那个属性.谢谢!! (2认同)