请考虑以下示例:
<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)
您可能希望查看对齐像素.这是WPF的一项功能,允许在渲染中使用一些额外的粒度.如果我们采取Line
并应用此:
<Line X1="0" X2="100" Y1="50" Y2="50" SnapsToDevicePixels="True"/>
Run Code Online (Sandbox Code Playgroud)
作为这个用途的一个例子,这是来自链接文章的图像:
归档时间: |
|
查看次数: |
86 次 |
最近记录: |