C# LinearGradientBrush WPF中的透明度不一致

C# LinearGradientBrush WPF中的透明度不一致,c#,wpf,linear-gradients,C#,Wpf,Linear Gradients,我在玩弄第三方颜色选择器。在本选取器中,为了得到光谱选取器区域,作者使用了三个重叠区域;一个是所选色调的纯色填充,一个是在上面,水平梯度从白色到透明,另一个是在上面,垂直梯度从透明到黑色 在摆弄的过程中,我注意到WPF在完全透明的颜色方面表现出不一致的行为,这取决于我为透明渐变停止定义的十六进制颜色。我用#00******(alpha为0的任何颜色)作为背景线rgRadientBrush的GradientStop color属性的值注意到了这一点。看起来,十六进制编码的透明颜色实际上是非常轻微可

我在玩弄第三方颜色选择器。在本选取器中,为了得到光谱选取器区域,作者使用了三个重叠区域;一个是所选色调的纯色填充,一个是在上面,水平梯度从白色到透明,另一个是在上面,垂直梯度从透明到黑色

在摆弄的过程中,我注意到WPF在完全透明的颜色方面表现出不一致的行为,这取决于我为透明渐变停止定义的十六进制颜色。我用
#00******
(alpha为0的任何颜色)作为背景线rgRadientBrush的GradientStop color属性的值注意到了这一点。看起来,十六进制编码的透明颜色实际上是非常轻微可见的,尽管alpha值为0,但它的颜色却与之匹配

下面是使用
#00000000
的预期行为;非常平滑的渐变:

…这是使用透明的;梯度似乎不再是线性的,而是偏向底部

(如果我对后面的白色渐变也做同样的处理,就会表现出同样的行为,但我不想让区别变得容易。)


这是代码供参考

                    <Grid x:Name="BlackGradient">
                        <Grid.Background>
                            <LinearGradientBrush StartPoint="0,1" EndPoint="0, 0">
                                <GradientStop Offset="0" Color="Black" />
                                <GradientStop Offset="1" Color="Transparent" />
                            </LinearGradientBrush>
                        </Grid.Background>
                    </Grid>

(将透明更改为透明的十六进制颜色以查看实际效果,例如
#00000000


在阅读了画笔.Transparent的MSDN文档后,微软表示Transparent解析为
#00FFFFFF
,这确实是我在尝试了各种透明十六进制颜色后发现该颜色略微可见的原因

发件人:

获取十六进制值为#00FFFFFF的实心填充颜色



这本身并不是一个真正的问题,但我很好奇为什么会这样。有人知道为什么这些病例被区别对待吗?

FWIW,这里的未回答问题:似乎与相同的行为有关。可能相关:不幸的是,我认为这不相关,对不起。这似乎是渲染/实现行为与LinerGradientBrush的区别,而您的链接问题涉及C#如何处理System.Windows.Media.Color对象类型的相等行为。我编辑了标题以使问题更清楚。如果我将
替换为
,它看起来完全一样。当然,越来越透明的白色会产生与越来越透明的黑色(或任何其他颜色)不同的结果。那么你的问题到底是什么?啊,正确(透明终究会解决这个问题)。将
#00FFFFFF
替换为
#00000000
将给您带来最大的不同。当我精炼这个问题时,这一点被冲淡了;将相应地编辑问题,我的错误。