WPF Multi-Touch 開發:慣性效果(Inertia)
摘要:在圖片移動過程中如果將手指移開屏幕則圖片會立刻停止,根據這種情況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
全站熱搜