#747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation)

原文地址:https://wpf.2000things.com/2013/02/01/747-implementing-inertia-during-touch-manipulation/

在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

阅读更多
文章标签: 惯性 触摸
个人分类: WPF
上一篇#742&743 –使用触摸事件旋转和缩放控件
下一篇#748 – 获得按下时对应位置点的大小(Getting the Size of a Contact Point during Raw Touch)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭