到目前为止,我们只看到简单的点到点的动画。我们使用了To和From属性或者By属性来设计动画——相对于当前的属性值。这很适合简单的动画,但是我们可以构造序列来创建更复杂的动画,这可能是非常麻烦的。幸运的是,这是没有必要的。WPF提供了动画对象,允许我们详细指出一系列时间和值。 在影视中传统的动画中,这是普通的开始——通过绘制最重要的动画步骤。这些关键帧定义了场景的基本流程,捕获了它的最重要的点。只... Read More
Storyboard是动画的集合。如果你使用了标记,所有的动画必须要被定义在一个Storyboard中。(在代码中创建隔离的动画对象,这是可能的,参见本章后面部分。)一个动画的结构通常是不同于设置了动画的UI的结构上。例如,你可能想要来两个单独的用户界面元素在同一时间被设置动画。因为Storyboard将动画从有动画效果的对象中隔离出来,Storyboard是自由地反射这样的连接,即使这些元素被设... Read More
Timeline代表了时间的延伸。它通常还描述了一个或多个在这段时间所发生的事情。例如,在前面章节描述的动画类型,都是Timeline。可哦率这样的DoubleAnimation: 正如Duration属性指出的,这代表了一个5秒的时间长度。所有类型的Timeline总是有一个开始时间和一个持续时间。如果没有详细指定开始时间,它默认为0:0:0,但是它可以使用BeginTime属性设置。开始时间... Read More
动画包括在一段时间内改变用户界面的某些可见的特征,如它的大小、位置或颜色。你可以做到这一点,非常困难的通过创建一个timer并在每一个timer_tick句柄中修改用户界面的外观。当然,这是动画在Win32或Windows Forms中典型的做法。幸运的是,WPF照顾到这些低级别的细节。动画,就像WPF中的其他特征,简单的要求我们声明想要做的。系统会为我们照顾它的实现。 所有的WPF动画支持归结为... Read More
想象带有一个完全静态外观的应用程序,对鼠标的点击或其他输入,将提供非可视化的反应。有时候这是困难的——通知应用程序是否在执行功能或已经被冻结了。我们依赖于可视化反馈来保证应用程序可以响应我们的输入。添加动作到到你的用户界面可以使之苏醒以及增强应用程序的交互式感觉。控件经常模仿物理性的行为。例如,按钮被点击的时候变得明显被挤入。然而,如果按钮转换的很突然——在它的正常和被挤入的状态之间,它看上去很做... Read More