如何对同一元素应用多种效果

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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 想要什么,特别是因为他清楚地说明了他想要实现的目标。

以上是关于如何对同一元素应用多种效果的主要内容,如果未能解决你的问题,请参考以下文章

我应该在对元素应用多种样式时从 DOM 中分离元素吗?

如何将效果应用于 jQuery 数组中检索到的元素?

同时对一个元素产生多种影响[重复]

CSS效果实现与源码

css中 Span 元素的 width 属性无效果原因及多种解决方案

元素转换-Transform