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のガンマ値は2.2前後です。したがって、RGB から ScRGB に変換するときは、255 で割り、次に値の n 乗根 (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 に答える