12

境界線で囲まれたサード パーティのデータ グリッドを持つ WPF アプリケーションがあります。を使用しDropShadowEffectて境界線の後ろに影を付けましたが、これはパフォーマンスに多少影響するようで ( ほどではありませんがBitmapEffect、それでも目立ちます)、フォントのレンダリングがぼやけます。どういうわけか境界線に効果を適用する方法はありますが、その内容には適用されませんか?

コンテンツへの効果を に設定しようとしました{x:Null}が、それは役に立ちませんでした。

これが私が思いついたサンプルアプリです。境界線の後ろに影を付けますが、テキストの各行の後ろにも影を付けます。テキストではなく、境界線の背後にある影が必要です。

<Window x:Class="WpfEffectTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Border BorderBrush="Black" BorderThickness="10" CornerRadius="5" Margin="25">
            <Border.Effect>
                <DropShadowEffect BlurRadius="10" ShadowDepth="5" />
            </Border.Effect>
            <StackPanel>
                <TextBlock>This is some text</TextBlock>
                <TextBlock>This is some text</TextBlock>
                <TextBlock>This is some text</TextBlock>
                <TextBlock>This is some text</TextBlock>
                <TextBlock>This is some text</TextBlock>
                <TextBlock>This is some text</TextBlock>
            </StackPanel>
        </Border>

    </Grid>
</Window>
4

3 に答える 3

19

gcores からのリンクには答えがありました。これは、境界線とそのコンテンツを同じグリッドにまとめて、コンテンツが境界線に重なるようにすることです。

<Window x:Class="WpfEffectTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Border BorderBrush="Black" BorderThickness="10" CornerRadius="5" Margin="25">
            <Border.Effect>
                <DropShadowEffect BlurRadius="10" ShadowDepth="5" />
            </Border.Effect>
        </Border>
        <StackPanel Margin="35">
            <TextBlock>This is some text</TextBlock>
            <TextBlock>This is some text</TextBlock>
            <TextBlock>This is some text</TextBlock>
            <TextBlock>This is some text</TextBlock>
            <TextBlock>This is some text</TextBlock>
            <TextBlock>This is some text</TextBlock>
        </StackPanel>
    </Grid>
</Window>
于 2009-04-30T17:39:14.600 に答える
4

簡単な(ハック?)解決策の1つは、

<StackPanel Background="White">

これにより、ドロップシャドウの問題があるテキストが解決されます(ただし、パフォーマンスの問題についてはわかりません)。問題は、WPFがset要素とビジュアルツリー内のすべての子に効果を適用することです。このリンクはそれをよりよく説明しています: DropShadowEffectのパフォーマンスの問題

于 2009-04-30T16:12:49.237 に答える
-2

すべての TextBlocks に対して次のブロック (または同様のブロック) を試してください。

<TextBlock>
    <TextBlock.Effect>
        <DropShadowEffect BlurRadius="30" ShadowDepth="5" Color="White"/>
    </TextBlock.Effect>
</TextBlock>
于 2016-05-27T08:03:09.997 に答える