#747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation)
2017-07-05 16:06
295 查看
原文地址:https://wpf.2000things.com/2013/02/01/747-implementing-inertia-during-touch-manipulation/
在WPF触摸操作滑动控件的时候,有的时候希望控件能够在手指离开控件后依照惯性继续滑动,直至慢慢减速停止。默认情况下这个功能是不开启的,当手指离开控件后,控件就会停止滑动。如果要开启惯性移动,需要在惯性移动开始事件ManipulationInertiaStarting 事件的事件处理函数中设置移动的减速加速度。
上面的代码中我们设置减速加速度为40英寸每ms^2 。DesiredDeceleration 属性的单位是DIP/ms^2 ,因此我们将40乘以96(以WPF逻辑像素为单位)。注意,一般的加速度单位的单位时间为秒的平方,而DesiredDeceleration 属性的单位时间是毫秒的平方(ms^2),所以我们在后面除了一个 1000.0*1000.0。
除了位移可以使用惯性之外,缩放和旋转触摸操作也可以使用惯性。同样是在ManipulationInertiaStarting 事件的事件处理函数中国设置,它们对应的属性分别是ExpansionBehavior
和RotationBehavior。
在WPF触摸操作滑动控件的时候,有的时候希望控件能够在手指离开控件后依照惯性继续滑动,直至慢慢减速停止。默认情况下这个功能是不开启的,当手指离开控件后,控件就会停止滑动。如果要开启惯性移动,需要在惯性移动开始事件ManipulationInertiaStarting 事件的事件处理函数中设置移动的减速加速度。
private void Image_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingEventArgs e) { e.TranslationBehavior.DesiredDeceleration = 40.0 * 96.0 / (1000.0 * 1000.0); Trace.WriteLine(e.TranslationBehavior.InitialVelocity); }
上面的代码中我们设置减速加速度为40英寸每ms^2 。DesiredDeceleration 属性的单位是DIP/ms^2 ,因此我们将40乘以96(以WPF逻辑像素为单位)。注意,一般的加速度单位的单位时间为秒的平方,而DesiredDeceleration 属性的单位时间是毫秒的平方(ms^2),所以我们在后面除了一个 1000.0*1000.0。
除了位移可以使用惯性之外,缩放和旋转触摸操作也可以使用惯性。同样是在ManipulationInertiaStarting 事件的事件处理函数中国设置,它们对应的属性分别是ExpansionBehavior
和RotationBehavior。
相关文章推荐
- #741 – 使用触摸事件移动控件(Using Touch Manipulation Events to Translate an Element)
- WPF 程序无法触摸操作
- 树节点移动操作----使用微软treeview控件
- 使用RAPI库操作移动设备——C#语言描述 (转贴)
- 在 CCR 环境中使用 Exchange 命令行管理程序移动存储组和数据库
- 使用自定义窗口以及对窗口的移动,缩放,关闭操作
- 程序中如何使用代码执行Insert操作
- 使用 Jbulider 开发 J2ME 移动游戏程序
- 使用Visual Studio生成安装程序并设定连接字符串及其他自定义操作.
- 使用JScript构造ASP_NET《ACCESS》操作程序
- WPF中使用调度程序构建反应速度更快的应用程序
- 使用WPF技术实现基于MSN协议的五子棋程序
- 在win2003server上使用移动硬盘时遇到的问题以及禁用“关闭事件跟踪程序”
- 树节点相互移动操作----使用微软treeview控件
- 禁止使用某一程序等小操作
- [原]用c#做了一个桌面程序用来分离excel文件里的数据时出现“操作必须使用一个可更新的查询”错误的解决
- 使用RAPI库操作移动设备——C#语言描述
- [翻译]DrawMe - 使用WPF/WCF创建的网络白板聊天程序
- WPF中使用调度程序构建反应速度更快的应用程序
- C#使用OpenNETCF.Desktop.Communication,实现对ActiveSync状态的判断,及对移动设备文件的操作!