【问题标题】:How to apply multiple effect on same element如何对同一元素应用多种效果
【发布时间】:2010-12-20 14:04:08
【问题描述】:

如何在同一个元素上设置多重效果,例如(阴影和模糊)。

【问题讨论】:

    标签: wpf wpf-controls styles effects


    【解决方案1】:

    请参阅 Greg Schechter 的 Using Effects in WPF (Part 2),其中可以像 Border 一样简单地嵌套 Decorators,并在每个 Effects 上放置不同的 Effects。

    【讨论】:

    • 解决另一个 WPF 缺陷的好方法。希望我知道他们决定不实施 EffectGroup 时的想法……
    • 简单而有效。
    • 问题是,对于复杂的层次结构,这会将效果应用于错误的项目——即使只是使用Grid,无论您将它放在控件上方、控件内部还是作为同级对于控件,这些都不会给出与将效果直接应用于相关控件相同的结果。
    【解决方案2】:

    要以最初的答案为基础并提供示例,只需将 UIElement 包含在另一个新的 UIElement 中(与此相关的任何元素,例如堆栈面板)。

    然后对这两个元素应用效果:

    <StackPanel>
        <MediaElement Name="myMedia" Source="Fairytale Dream.wmv" >
            <MediaElement.Effect>
                <ShaderEffectLibrary:BloomEffect />
            </MediaElement.Effect>
        </MediaElement>
        <StackPanel.Effect>
            <ShaderEffectLibrary:ZoomBlurEffect />
        </StackPanel.Effect>
    </StackPanel>
    

    【讨论】:

    • 这本质上与 Greg Schechter 所采用的方法相同,被接受为答案。您可以详细说明这有何不同,和/或参考其他答案,因为它非常相似。
    【解决方案3】:

    我觉得这里不需要合并效果。

    其中一种效果将帮助您模拟其他效果 就像 DropShadow 效果一样,您可以将 BlurRadius 用于模糊效果,将 ShadowDepth 用于阴影。

    通过使用适当的值,您可以模拟组合效果...

    【讨论】:

    • 我们不能决定 OP 想要什么,特别是因为他清楚地说明了他想要实现的目标。
    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多