Windows 8實用竅門系列:4.Windows 8的常用滑鼠事件

來源:互聯網
上載者:User

  在Windows 8中採用一些新的滑鼠事件以替代以前Silverlight的滑鼠事件,其常用事件如下:

  PointerWheelChanged:滑鼠中鍵滑動事件。

  PointerPressed:滑鼠點擊下去的時候即觸發事件。

  PointerReleased:滑鼠點擊下去的時候釋放滑鼠時觸發事件。

  PointerEntered:滑鼠進入有效範圍之時觸發一次。

  PointerMoved:滑鼠在有效範圍之內移動之時觸發事件。

  PointerExited:滑鼠退出有效範圍之時觸發事件。

  在本文中將通過執行個體示範各種滑鼠事件的響應.下面我們看執行個體源碼如下:

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">        <Canvas Name="MainCanvas" Width="600" Height="300" Background="Cornsilk"                PointerWheelChanged="MainCanvas_PointerWheelChanged"                 PointerReleased="MainCanvas_PointerReleased"                PointerPressed="MainCanvas_PointerPressed"                PointerMoved="MainCanvas_PointerMoved"                PointerExited="MainCanvas_PointerExited"                PointerEntered="MainCanvas_PointerEntered"                ></Canvas>        <TextBlock HorizontalAlignment="Left" Foreground="Gold" Margin="383,99,0,0" TextWrapping="Wrap"                    Name="tbLabel" Text="" VerticalAlignment="Top" Height="40" Width="418"/>        <TextBlock HorizontalAlignment="Left" Foreground="Gold" Margin="774,99,0,0" TextWrapping="Wrap"                    Name="tbLabelNext" Text="" VerticalAlignment="Top" Height="40" Width="209"/>        <TextBlock HorizontalAlignment="Left" Foreground="Gold" Margin="564,171,0,0" TextWrapping="Wrap"                    Name="tbLabelFore" Text="" VerticalAlignment="Top" Height="40" Width="209"/>    </Grid>

  其中Xaml.cs後台代碼如下,

    /// <summary>    /// 可用於自身或導航至 Frame 內部的空白頁。    /// </summary>    public sealed partial class MainPage : Page    {        public MainPage()        {            this.InitializeComponent();        }        Point start = new Point();        /// <summary>        /// 在此頁將要在 Frame 中顯示時進行調用。        /// </summary>        /// <param name="e">描述如何訪問此頁的事件數目據。Parameter        /// 屬性通常用於配置頁。</param>        protected override void OnNavigatedTo(NavigationEventArgs e)        {        }        //滑鼠中鍵滑動事件        private void MainCanvas_PointerWheelChanged(object sender, PointerRoutedEventArgs e)        {            this.tbLabel.Text = "滑動了一次滑鼠中箭";        }        //滑鼠點擊下去的事件        private void MainCanvas_PointerPressed(object sender, PointerRoutedEventArgs e)        {            start = e.GetCurrentPoint(MainCanvas).Position;            this.tbLabel.Text = "點擊了一次滑鼠或者螢幕";        }        //滑鼠松鍵事件        private void MainCanvas_PointerReleased(object sender, PointerRoutedEventArgs e)        {            Point end = e.GetCurrentPoint(MainCanvas).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)            {                this.tbLabel.Text = "點擊了一次滑鼠或者螢幕";            }            else if (angle >= 45 && angle < 135)            {                this.tbLabelFore.Text = "從下往上";            }            else if (angle <= 45 || angle > 315)            {                this.tbLabelFore.Text = "從左向右滑";            }            else if (angle >= 135 && angle < 225)            {                this.tbLabelFore.Text = "從右向左滑";            }            else if (angle >= 225 && angle < 315)            {                this.tbLabelFore.Text = "從上往下";            }        }                //滑鼠移動事件        private void MainCanvas_PointerMoved(object sender, PointerRoutedEventArgs e)        {            Point point = e.GetCurrentPoint(MainCanvas).Position;            this.tbLabel.Text = "滑鼠正在移動X:"+point.X+",Y:"+point.Y;        }        //滑鼠移出範圍事件        private void MainCanvas_PointerExited(object sender, PointerRoutedEventArgs e)        {            this.tbLabelNext.Text = "滑鼠移出作用範圍";        }        //滑鼠進入範圍事件        private void MainCanvas_PointerEntered(object sender, PointerRoutedEventArgs e)        {            this.tbLabelNext.Text = "滑鼠進入範圍";        }    }

  是效果示範,如需源碼請點擊 Win8Event.zip 下載.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.