现在的位置: 首页 > 综合 > 正文

windows8 手势

2012年09月05日 ⁄ 综合 ⁄ 共 2004字 ⁄ 字号 评论关闭

LayoutRoot_PointerPressed

LayoutRoot_PointerReleased(有些控件可能三PointerExited)

这2个事件不一定标准,对于不同的控件有不同的事件响应,具体的大家自己去试。但Pointer(xxx)的都是用来响应手势的。

PointerMoved这个三移动的时候的事件(但是对于鼠标来说是很变态的,只要鼠标指针在控件上,它就会一直执行)。

#region 手势
        Point start = new Point();
        Point end = new Point();
        Stopwatch s = new Stopwatch();
        private void LayoutRoot_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            start = e.GetCurrentPoint(LayoutRoot).Position;
            s.Restart();
        }

        private void LayoutRoot_PointerReleased(object sender, PointerRoutedEventArgs e)
        {
            s.Stop();
            long time = s.ElapsedMilliseconds;
            end = e.GetCurrentPoint(LayoutRoot).Position;
            double angle = 0;
            if (Math.Abs(end.X - start.X) < 1 && Math.Abs(end.Y - start.Y) < 1)
            {
                angle = 0;
            }
            else if (end.X > start.X)
            {

                if (end.Y > start.Y)
                {
                    angle = 360 - Math.Atan((end.Y - start.Y) * 1.0 / (end.X - start.X)) * 180 / Math.PI;
                }
                else
                {
                    angle = Math.Atan((start.Y - end.Y) * 1.0 / (end.X - start.X)) * 180 / Math.PI;
                }
            }
            else if (end.X < start.X)
            {
                 if (end.Y > start.Y)
                {
                    angle = Math.Atan((end.Y - start.Y) * 1.0 / (start.X - end.X)) * 180 / Math.PI + 180;
                }
                else
                {
                    angle = 180 - Math.Atan((start.Y - end.Y) * 1.0 / (start.X - end.X)) * 180 / Math.PI;
                }
            }

            double length = Math.Sqrt((end.X - start.X) * (end.X - start.X) + (end.Y - start.Y) * (end.Y - start.Y));
            Debug.WriteLine("速度" + length / time);
            if (angle == 0.0)
            {
                //点击

                return;
            }
            else if (angle < 45 || angle > 315)
            {
                //从左向右滑

            }
            else if (angle > 135 && angle < 225)
            {
                //从右向左滑

            }
            else
            {
//根据自己需要的角度进行判断。                

            }

        }
        #endregion

抱歉!评论已关闭.