Windows Phone 8.1 鼠标事件

network | | 访问(74)
<StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <Ellipse  Height="200" Width="200" Fill="Red" Name="ellipse1" />
    <TextBlock x:Name="textBlock"  FontSize="30"></TextBlock>
</StackPanel>
public sealed partial class MainPage: Page {
    Point start = new Point();
    public MainPage() {
        this.InitializeComponent();
        ellipse1.PointerEntered += ellipse1_PointerEntered;
        ellipse1.PointerExited += ellipse1_PointerExited;
        ellipse1.PointerMoved += ellipse1_PointerMoved;
        ellipse1.PointerPressed += ellipse1_PointerPressed;
        ellipse1.PointerReleased += ellipse1_PointerReleased;
    }

    void ellipse1_PointerReleased(object sender, PointerRoutedEventArgs e) {
        Debug.WriteLine("触发PointerReleased事件");
    }

    void ellipse1_PointerPressed(object sender, PointerRoutedEventArgs e) {
        Debug.WriteLine("触发PointerPressed事件");
    }

    void ellipse1_PointerMoved(object sender, PointerRoutedEventArgs e) {
        Debug.WriteLine("触发PointerMoved事件");
    }

    void ellipse1_PointerExited(object sender, PointerRoutedEventArgs e) {
        Debug.WriteLine("触发PointerExited事件");
        Point end = e.GetCurrentPoint(ellipse1).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;
            }
        }
        if (angle == 0) {
            textBlock.Text = "点击操作";
        } else if (angle >= 45 && angle < 135) {
            textBlock.Text = "滑动操作:从下往上";
        } else if (angle <= 45 || angle > 315) {
            textBlock.Text = "滑动操作:从左向右滑";
        } else if (angle >= 135 && angle < 225) {
            textBlock.Text = "滑动操作:从右向左滑";
        } else if (angle >= 225 && angle < 315) {
            textBlock.Text = "滑动操作:从上往下";
        }
    }

    void ellipse1_PointerEntered(object sender, PointerRoutedEventArgs e) {
        Debug.WriteLine("触发PointerEntered事件");
        start = e.GetCurrentPoint(ellipse1).Position;
    }

}