Windows 8開發入門(四) 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 = "滑鼠進入範圍";           }       }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.