多点触摸操作

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;

        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值