程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF Multi-Touch 開發:慣性效果(Inertia)

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

編輯:關於.NET

從上一篇實例可以發現在圖片移動過程中如果將手指移開屏幕則圖片會立刻停 止,根據這種情況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 時,圖片都已具備慣性效果。

視頻地址:http://static.youku.com/v1.0.0122/v/swf/qplayer.swf? VideoIDS=XMTk4MjUyNDAw&embedid=MTI1LjY5LjE0NC4zNgI0OTU2MzEwMAJ3d3cu Y25ibG9ncy5jb20CL2duaWVsZWUvYXJjaGl2ZS8yMDEwLzA4LzE5L211bHRpLXRvdWNoLWl uZXJ0aWEuaHRtbA==&showAd=0

源碼下載地址:http://cid- c75f4e27adfe5bbc.office.live.com/self.aspx/GnieTech/WpfInertia.zip

出處:http://www.cnblogs.com/gnielee/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved