3

我有一个带有 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>

也许它与原色有关?

4

1 回答 1

3

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

您越接近 1,差异越小(因此 FF/255/1 工作得非常好)

通过对 ScRGB 的研究和研究,ScRGB 的 Gamma 值在 2.2 左右。因此,当从 RGB 转换为 ScRGB 时,您可能需要除以 255,然后将值的 nth(2.2) 根除以得出最终值。

例如

value 5E is 94

94 / 255 = 0.36862745098039215686274509803922

2.2root of 94/255 = 0.635322735100355

0.635322735100355 * 255 = A2

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

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

为什么MS这样实现它?我不知道

资料来源:

于 2014-04-03T13:40:07.090 回答