我有一个带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>
也许它与原色有关?
答案 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会像这样实现它?我没有想法
来源: