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