如何在WPF中为图像内容添加动画效果?
我有一个非常基本的用户控件,带有一个带图像的按钮。 我想通过将按钮的图像更改为不同的图像来为该图像设置动画。
不幸的是,当我运行它并将鼠标hover在按钮上时,我得到“Freezable无法冻结”exception(鼠标事件处理程序更改状态)。 它似乎试图冻结当前图像,但不能出于某种原因。
我试过这样做而不使用静态资源(只是将图像内联),但同样的错误。 奇怪的是,我可以找到很少关于在Content属性上做动画的文档或博客。 我不得不想象这将是一个常见的场景。 关于我做错了什么的任何想法?
非常感谢您对此的帮助!
这可能不是最好(或最简单)的方法。 Content
属性绝对不是WPF设计者对动画的想法。 以下是我将如何做到这一点:
- 将
Button.Content
设置为Grid
其中两个图像都放在里面(因此,彼此重叠)。 - 将要最初可见的
Image
上的Opacity
设置为最初隐藏的Image
上的1.0和0.0。 - 使用
DoubleAnimation
而不是ObjectAnimation
为Opacity
动画 – 您可以通过将一个人的不透明度设置为0.0来同时将另一个设置为1.0来切换图像。 此外,根据持续时间,这将给你一个很好的渐变过渡。