WPF DropShadowEffect - 意外的色差

时间:2013-08-08 16:14:08

标签: wpf colors

我有一个带DropShadowEffect的TextBlock。某些阴影颜色显示的颜色比指定的颜色更暗,几乎就像它们着色一样。但是,每种颜色都不会发生这种情况。有谁知道为什么,或者纠正它的方法?

这是一个非常基本的例子:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="FontSize" Value="100" />
            <Setter Property="Text" Value="THIS IS TEXT WITH A SHADOW" />
        </Style>
    </StackPanel.Resources>

    <!-- Expected Result -->
    <TextBlock Foreground="#FFFF0000">
        <TextBlock.Effect>
            <DropShadowEffect ShadowDepth="20" Color="#FFFF0000" />
        </TextBlock.Effect>
    </TextBlock>

    <!-- Unexpected Result -->
    <TextBlock Foreground="#FF005E20">
        <TextBlock.Effect>
            <DropShadowEffect ShadowDepth="20" Color="#FF005E20" />
        </TextBlock.Effect>
    </TextBlock>

</StackPanel>

也许它与原色有关?

1 个答案:

答案 0 :(得分:2)

它正在将DropShadowEffect转换为特定的Sc值。

你越接近1,差异越小(因此FF / 255/1非常好)

通过研究和研究ScRGB,ScRGB的伽玛值约为2.2。因此,当从RGB转换为ScRGB时,您可能需要除以255,然后除以值的第n(2.2)个根来得出最终值。

E.g。

value 5E is 94

94 / 255 = 0.36862745098039215686274509803922

2.2root of 94/255 = 0.635322735100355

0.635322735100355 * 255 = A2

因此,当您将前景的ScG设置为5E时,需要将DropShadowEffect设置为A2。

这只是我的观察以及我从研究中得出的结论。

为什么MS会像这样实现它?我没有想法

来源: