1.要处理Manipulation事件,首先必须设置UIElement的IsManipulationEnabled为true
2.ManipulationInertiaStartingEvent事件包含一个ManipulationStartingEventArgs参数,通过该参数可以设置:
UIElement的ManipulationContainer —— 设置该UIElement的容器
Mode —— 处理的事件类型,包含以下枚举
None:不处理
TranslateX:处理水平移动
TranslateY:处理垂直移动
Translate:处理移动
Rotate:处理旋转
Scale:处理缩放
All:处理所有事件
private void image_ManipulationStarting(object sender, ManipulationStartingEventArgs e){// 设置容器
e.ManipulationContainer = canvas;//处理事件类型.e.Mode = ManipulationModes.All;}
3.要实现控件的移动,缩放,旋转,可以在控件ManipulationDeltaEvent事件中使用以下代码:
private void image_ManipulationDelta(object sender, ManipulationDeltaEventArgs e){// 获取被操作对象 FrameworkElement element = (FrameworkElement)e.Source;//使用Matrix操作对象.Matrix matrix = ((MatrixTransform)element.RenderTransform).Matrix;var deltaManipulation = e.DeltaManipulation;// 设置中心点Point center = new Point(element.ActualWidth / 2, element.ActualHeight / 2);center = matrix.Transform(center);// 处理缩放matrix.ScaleAt(deltaManipulation.Scale.X, deltaManipulation.Scale.Y, center.X, center.Y);// 处理旋转
matrix.RotateAt(e.DeltaManipulation.Rotation, center.X, center.Y);//处理移动.matrix.Translate(e.DeltaManipulation.Translation.X, e.DeltaManipulation.Translation.Y);// 设置matrix.((MatrixTransform)element.RenderTransform).Matrix = matrix;}