如何避免 WPF 的线性渐变画笔中的色带

本文关键字:画笔 色带 渐变 线性 何避免 WPF | 更新日期: 2023-09-27 18:33:36

除了在软件中使用图像和抖动渐变(或弄乱为我做抖动的像素着色器)之外,我还能做些什么来避免使用 .NET 4.6.1 在 WPF 中的单色渐变中出现色带?

相关:有没有办法强制 WPF 在幕后使用 16bpc 颜色?

如何避免 WPF 的线性渐变画笔中的色带

我发现的一种方法是将渐变添加到容器中,给它一个小的负边距,使其溢出一点,向渐变添加 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>

负渐变应等于模糊半径,使其在边缘上不会变得透明。