WPF Multi-Touch 開發:慣性效果(Inertia)

作者: Gnie  來源: 博客園  發布時間: 2010-08-21 14:19  閱讀: 2854 次  推薦: 0   原文鏈接   [收藏]  
摘要:在圖片移動過程中如果將手指移開屏幕則圖片會立刻停止,根據這種情況WPF 提供另外一種慣性效果(Inertia)。通過它可以使UI 單元移動的更加符合物理特性、更為實際和流暢。

  從上一篇實例可以發現在圖片移動過程中如果將手指移開屏幕則圖片會立刻停止,根據這種情況WPF 提供另外一種慣性效果(Inertia)。通過它可以使UI 單元移動的更加符合物理特性、更為實際和流暢。

  在前面代碼的基礎上還需要為<Canvas> 增加ManipulationInertiaStarting 事件。

<Canvas x:Name="touchPad" Background="Gray"                
        ManipulationStarting="image_ManipulationStarting"  
        ManipulationDelta="image_ManipulationDelta"
        ManipulationCompleted="image_ManipulationCompleted"
        ManipulationInertiaStarting="image_ManipulationInertiaStarting">

  image_ManipulationInertiaStarting 事件內容如下代碼,分別對TranslationBehavior、ExpansionBehavior、RotationBehavior 進行設置,使其具備慣性特征。

private void image_ManipulationInertiaStarting(object sender, 
    ManipulationInertiaStartingEventArgs e)
{
    e.TranslationBehavior = new InertiaTranslationBehavior();
    e.TranslationBehavior.InitialVelocity = e.InitialVelocities.LinearVelocity;
    e.TranslationBehavior.DesiredDeceleration = 10.0 * 96.0 / (1000.0 * 1000.0);
    
    e.ExpansionBehavior = new InertiaExpansionBehavior();
    e.ExpansionBehavior.InitialVelocity = e.InitialVelocities.ExpansionVelocity;
    e.ExpansionBehavior.DesiredDeceleration = 0.1 * 96 / 1000.0 * 1000.0;
    
    e.RotationBehavior = new InertiaRotationBehavior();
    e.RotationBehavior.InitialVelocity = e.InitialVelocities.AngularVelocity;
    e.RotationBehavior.DesiredDeceleration = 720 / (1000.0 * 1000.0);
}

  程序演示

  通過下面視頻可以看到在進行Manipulation 時,圖片都已具備慣性效果。

  相關文章

  1. WPF Multi-Touch 開發:Windows 7 安裝多點觸屏模擬器
  2. WPF Multi-Touch 開發:基礎觸屏操作(Raw Touch)
  3. WPF Multi-Touch 開發:高級觸屏操作(Manipulation)

  源碼下載:WpfInertia.zip

0
0
 
標簽:WPF
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()