我有一个带有 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>
也许它与原色有关?
它正在将 DropShadowEffect 转换为特定的 Sc 值。
越接近 1,差异越小(因此 FF/255/1 工作绝对没问题)
通过对ScRGB的研究和研究,ScRGB的gamma值在2.2左右。因此,当从 RGB 转换为 ScRGB 时,您可能需要除以 255,然后除以该值的 nth(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为什么要这样实现呢?我不知道
资料来源:
- RGB/XYZ 矩阵 http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
- 维基百科上的数据 sRGB http://en.wikipedia.org/wiki/SRGB
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)