使用模糊效果使标签/文本块在玻璃上可读

Pay*_*aya 7 .net c# wpf presentation

我正在使用WPF 3.5 SP1,我想实现这样的事情(玻璃部分已经完成):

http://lh3.ggpht.com/_0B12UOQNmgU/SwPqI4FcYaI/AAAAAAAAASM/HKFPyZ9uX3o/Aero%20Glass.jpg
(来源)


(来源)

你可以在文本周围看到漂亮的模糊,这使它非常易读.我还发现正确的方法是使用API DrawThemeTextEx,它使用推荐的系统选项渲染模糊.但是,如何使用WPF实现相同的效果?

我能够找到包含有用资源的链接:
如何使Aero玻璃背景上的WPF文本可读?
玻璃表面上的发光标签控件

他们通过复制TextBlock并在其上设置模糊效果来实现.但是,这不是一个真正的解决方案.这是它的样子:

http://i53.tinypic.com/2ly67nq.png

将结果效果与上面的图像进行比较,您将看到解决方案仍然很遥远.那么如何使用WPF正确获得所需的效果呢?我很好用仿真(不使用DrawThemeTextExAPI),只要结果非常相似.

谢谢.

Jar*_*dek 7

    <TextBlock ...>
        <TextBlock.Effect>
            <DropShadowEffect BlurRadius="10" Color="White" ShadowDepth="0" />
        </TextBlock.Effect>
    </TextBlock>
Run Code Online (Sandbox Code Playgroud)


Pay*_*aya 7

根据卢克的要求,我包括了XAMLfor Decorator:

<Decorator>
    <Decorator.Effect>
        <DropShadowEffect BlurRadius="7" Color="White" ShadowDepth="0" />
    </Decorator.Effect>
    <Decorator>
        <Decorator.Effect>
            <DropShadowEffect BlurRadius="7" Color="White" ShadowDepth="0" />
        </Decorator.Effect>
        <Decorator>
            <Decorator.Effect>
                <DropShadowEffect BlurRadius="7" Color="White" ShadowDepth="0" />
            </Decorator.Effect>

            <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}"
                    Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" 
                    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" 
                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
        </Decorator>
    </Decorator>
</Decorator>
Run Code Online (Sandbox Code Playgroud)

我用前面提到的XAML 创建了一个ControlTemplatefor a Label,并在我需要文本发光的任何地方使用它.