除了在软件中使用图像和抖动渐变(或者使用为我进行抖动的像素着色器搞乱)之外,我还能做些什么来避免使用WPF中的单色渐变中的色带。 NET 4.6.1?
相关:有没有办法强制WPF在幕后使用16bpc颜色?
答案 0 :(得分:1)
我发现的一种方法是将渐变添加到容器中,给它一个小的负边距,使其溢出一点,向渐变添加一个BlurEffect,然后在父容器上打开ClipToBounds。这样,梯度就会以牺牲性能为代价而变得更好。
根据您的使用情况,这可能不太可行。
示例:
<Grid Height="26" Margin="-5,0" ClipToBounds="True">
<Grid Margin="-5">
<Grid.Effect>
<BlurEffect Radius="6" />
</Grid.Effect>
<Grid.Background>
<LinearGradientBrush>
<GradientStop x:Name="GradientStop7" Color="Magenta" Offset="0.0" />
<GradientStop x:Name="GradientStop8" Color="DarkOrchid" Offset=".2" />
<GradientStop x:Name="GradientStop9" Color="Purple" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
</Grid>
负梯度应该等于模糊半径,以便它不会在边缘变得透明。