《Programming WPF》翻译 第8章 5.创建动画过程
原文:《Programming WPF》翻译 第8章 5.创建动画过程
所有在这章使用xaml举例说明的技术,都可以在代码中使用,正如你希望的。可是,代码可以使用动画在某种程度上不可能在xaml中实现的。
在代码中创建动画需要稍微多一点的努力——比使用标记。然而,代码提供了更多的弹性。你可以在运行期计算属性,而不是在xaml中硬编码,从而支持你的动画适应环境。例如,这可能是有用的——在当前窗体的大小基于动画的参数。
使用代码一个额外的好处是我们不需要使用storyboard,替代的,我们可以创建一些被称为“本地动画”的对象。“本地动画”直接应用到一个特定的属性,这并不是storyboard的一部分。对于简单的动画,“本地动画”的使用不比storyboard简单。猜想你的标记中包含下面的椭圆:
<Ellipse x:Name=”theEllipse” Width=”50” Height=”100” Fill=”Red” />你可以为此在代码中创建和加载一个“本地动画”,如图8-26所示:
示例8-26
DoubleAnimation widthAnimation = new DoubleAnimation( );
widthAnimation.By ;
widthAnimation.Duration ));
theEllipse.PersistentAnimations[Ellipse.WidthProperty] =
widthAnimation;
Clock clock = theEllipse.PersistentAnimations.GetClock(Ellipse.WidthProperty);
clock.ClockController.Begin( );我们不仅不需要把这些放入storyboard集合中我们还不需要SetterTimeline。使用storyboard,SetterTimeline需要指出哪个对象和属性被设置了动画。使用“本地动画”,你可以直接将动画添加到目标对象的PersistentAnimation集合,详细指出该属性作为集合中的索引。
《Programming WPF》翻译 第8章 5.创建动画过程的更多相关文章
- 《Programming WPF》翻译 第6章 1.创建和使用资源
原文:<Programming WPF>翻译 第6章 1.创建和使用资源 资源这个词具有非常广泛的意义.任何对象都可以是一个资源.一个在用户界面中经常使用的Brush或者Color可以是一 ...
- 《Programming WPF》翻译 第8章 4.关键帧动画
原文:<Programming WPF>翻译 第8章 4.关键帧动画 到目前为止,我们只看到简单的点到点的动画.我们使用了To和From属性或者By属性来设计动画--相对于当前的属性值.这 ...
- WPF/WP/Silverlight/Metro App代码创建动画的思路
在2010年之前,我都是用Blend创建动画,添加触发器实现自动动画,后来写成代码创建的方式.如今Blend已经集成到Visual Studio安装镜像中了,最新的VS2015安装,Blend的操作界 ...
- 《Programming WPF》翻译 目录
原文:<Programming WPF>翻译 目录 注:第1.2章我只做了笔记,没有翻译,请大家阅读时注意. 还有就是,这本书的英文版本下载:[O'Reilly] Programming ...
- 《Programming WPF》翻译 第9章 5.默认可视化
原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作 ...
- 《Programming WPF》翻译 第9章 4.模板
原文:<Programming WPF>翻译 第9章 4.模板 对一个自定义元素最后的设计考虑是,它是如何连接其可视化的.如果一个元素直接从FrameworkElement中派生,这将会适 ...
- 《Programming WPF》翻译 第9章 3.自定义功能
原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框 ...
- 《Programming WPF》翻译 第9章 2.选择一个基类
原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ...
- 《Programming WPF》翻译 第9章 1.自定义控件基础
原文:<Programming WPF>翻译 第9章 1.自定义控件基础 在写一个自定义控件之前,你需要问的第一个问题是,我真的需要一个自定义控件吗?一个写自定义控件的主要原因是为了用户界 ...
随机推荐
- C++中实现回调机制的几种方式(一共三种方法,另加三种)
(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型. 比如下面的示例代码,我们在Down ...
- Sessions, Window Stations and Desktops(GetDesktopWindow函数得到的桌面句柄, 是Csrss.exe创建的一个窗口)
由于不是搞安全的,对这块的东西一直不是很清楚,今天特意整理下. 总的来说,他们的关系如下: 我们知道Windows是支持多用户的,Session可以理解为每个用户登录,比如当前登录和远程登陆.Wind ...
- BZOJ2754: [SCOI2012]喵星球上的点名
2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 680 Solved: 314[Submit][Sta ...
- Mac OS X 下修改网卡地址和抵御 ARP 攻击
用 Mac 系统有一段时间了,这里记录一下自己遇到的需要终端命令解决的问题. 网络环境绑定了原先机器的 MAC 地址,由于特殊原因,先把新机器的网卡地址改成原先那台. 在终端输入sudo ifconf ...
- Android Fragment详解(六):Fragement示例
把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptio ...
- TTB 基本
中文名 ,线程构建模块 外文名 Thread Building Blocks 缩 写 TBB 开 发 intel 目录 1线程构建模块 2黑体亮温 3斜交载重轮胎 4串联球轴承 1 ...
- 解决如何让AsyncTask终止操作
受到这个的启发终于结局了如何在AsyncTask运行中终止其操作. 单纯的onCancelled(true)是不行的 下面把代码贴出来~实现了登陆功能. AsyncTask简介,它使创建需要与用户界面 ...
- 伸缩放大的js
window.onload = function() { var div1 = document.getElementById('div1'); div1.onmous ...
- AVD启动不了 ANDROID_SDK_HOME is defined but could not find *.ini
报错提示______________________________________________________________________ Starting emulator for AVD ...
- ASP.NET中实现Ajax分页
在页面中指定一个div容器来接收动态生成的分页数据: <div id="div_menu"> </div> 使用jQuery来请求并处理Json格式数据: ...