如何对同一元素应用多种效果
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
,并在每个 Effect
s 上放置不同的 Effect
s。
【讨论】:
解决另一个 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 想要什么,特别是因为他清楚地说明了他想要实现的目标。以上是关于如何对同一元素应用多种效果的主要内容,如果未能解决你的问题,请参考以下文章