上一页 1 2 3 4 5 6 ··· 16 下一页
摘要: 在前面章节中,花费大量时间分析了窗口的内容模型——换句话说,研究了如何在其他元素中嵌套元素,进而构建完整的窗口。 例如,考虑下图中显示的一个非常简单的窗口,该窗口包含两个按钮。为创建该按钮,在窗口中嵌套了一个StackPanel控件。在StackPanel控件中,放置了两个Button控件,并且在每 阅读全文
posted @ 2020-03-11 20:19 Peter.Luo 阅读(1734) 评论(1) 推荐(5) 编辑
摘要: 在“【WPF学习】第五十章 故事板”中讨论了如何使用代码创建简单动画,以及如何使用XAML标记构建更复杂的故事板——具有多个动画以及播放控制功能。但有时采用更复杂的故事板例程,并在代码中实现全部复杂功能是合理的。实际上,这种情况十分常见。当需要处理多个动画并且预先不知道将有多少个动画或不知道如何配置 阅读全文
posted @ 2020-03-09 23:00 Peter.Luo 阅读(1154) 评论(1) 推荐(4) 编辑
摘要: 除基于属性的动画系统外,WPF提供了一种创建基于帧的动画的方法,这种方法只使用代码。需要做的全部工作是响应静态的CompositionTarge.Rendering事件,触发该事件是为了给每帧获取内容。这是一种非常低级的方法,除非使用标准的基于属性的动画模型不能满足需要(例如,构建简单的侧边滚动游戏 阅读全文
posted @ 2020-03-06 23:03 Peter.Luo 阅读(1154) 评论(0) 推荐(2) 编辑
摘要: 基于路径的动画使用PathGeometry对象设置属性。尽管原则上基于路径的动画也能用于修改任何适当数据类型的属性,但当动态改变与位置相关的属性时最有用。实际上,基于路径的动画类主要用于帮助沿着一条路径移动可视化对象。 正如在“【WPF学习】第四十三章 路径和几何图形”学过的,PathGeometr 阅读全文
posted @ 2020-03-05 18:54 Peter.Luo 阅读(1234) 评论(1) 推荐(3) 编辑
摘要: 到目前为止,看到的所有动画都使用线性插值从起点到终点。但如果需要创建具有多个分段的动画和不规则移动的动画。例如,可能希望创建一个动画,快速地将一个元素滑入到视图中,然后慢慢地将它移到正确位置。可通过创建两个连续的动画,并使用BeginTime属性在第一个动画之后开始第二个动画来实现这种效果。然而,还 阅读全文
posted @ 2020-03-05 18:00 Peter.Luo 阅读(1109) 评论(3) 推荐(6) 编辑
摘要: 创建动画面临的第一个挑战是为动画选择正确的属性。期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观。下面是一些指导原则: 如果希望使用动画来使元素显示和消失,不要使用Visibility属性(该属性只能在完全 阅读全文
posted @ 2020-03-03 17:52 Peter.Luo 阅读(1126) 评论(2) 推荐(9) 编辑
摘要: 通常,为用户界面应用动画只不过是创建并配置正确的动画和故事板对象。但在其他情况下,特别是同时发生多个动画时,可能需要更加关注性能。特定的效果更可能导致这些问题——例如,那些涉及视频、大位图以及多层透明等的效果通常需要占用更多CPU开销。如果不谨慎实现这类效果,运行它们使可能造成明显抖动,或者会从其他 阅读全文
posted @ 2020-03-01 23:21 Peter.Luo 阅读(1539) 评论(3) 推荐(4) 编辑
摘要: 线性动画的一个缺点是,它通常让人觉得很机械且不能够自然。相比而言,高级的用户界面具有模拟真实世界系统的动画效果。例如,可能使用具有触觉的下压按钮,当单击时按钮快速弹回,但是当没有进行操作时它们会慢慢地停下来,创建真正移动的错觉。或者,可能使用类似Windows操作系统的最大化和最小化效果,当窗口解决 阅读全文
posted @ 2020-03-01 18:34 Peter.Luo 阅读(1624) 评论(4) 推荐(4) 编辑
摘要: 正如上一章介绍,WPF动画通过一组动画类(Animation类)表示。使用少数几个熟悉设置相关信息,如开始值、结束值以及持续时间。这显然使得它们非常适合于XAML。不是很清晰的时:如何为特定的事件和属性关联动画,以及如何在正确的时间触发动画。 在所有声明式动画中都会用到如下两个要素: 故事板。故事板 阅读全文
posted @ 2020-02-29 17:51 Peter.Luo 阅读(3867) 评论(2) 推荐(5) 编辑
摘要: 在前一章已经学习过WPF动画的第一条规则——每个动画依赖于一个依赖项属性。然而,还有另一个限制。为了实现属性的动态化(换句话说,使用基于时间的方式改变属性的值),需要有支持相应数据类型的动画类。例如,Button.Width属性使用双精度数据类型。为实现属性的动态化,需要使用DoubleAnimat 阅读全文
posted @ 2020-02-26 21:13 Peter.Luo 阅读(1552) 评论(1) 推荐(7) 编辑
上一页 1 2 3 4 5 6 ··· 16 下一页