乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      WPF Multi-Touch 開發(fā):基礎(chǔ)觸屏操作(Raw Touch)

       看見就非常 2012-09-15

      WPF Multi-Touch 開發(fā):基礎(chǔ)觸屏操作(Raw Touch)

           多點觸控(Multi-Touch)就是通過與觸屏設(shè)備的接觸達(dá)到人與應(yīng)用程序交互的操作過程。例如,生活中經(jīng)常使用的觸屏手機、觸屏筆記本、顯示器以及微軟最新的Surface 產(chǎn)品等這些都屬于觸屏操作設(shè)備。本篇將介紹如何開發(fā)能夠支持MT 功能的應(yīng)用程序。

           在WPF 4 中已經(jīng)具備的多點觸控開發(fā)技術(shù),當(dāng)多個手指觸碰到觸屏設(shè)備時,WPF 會把每跟手指認(rèn)為是一個觸控設(shè)備,并為其分配唯一的識別ID,以便跟蹤不同手指的操作手勢。下面將通過實例演示W(wǎng)PF 所支持的低級別觸控操作:觸碰(TouchDown)、分離(TouchUp)、移動(TouchMove),它們都是一些最基礎(chǔ)的操作模式。

      創(chuàng)建項目

           新建項目在XAML中寫入如下代碼,<Grid>中只添加了<Canvas> 控件,其中包含TouchDown、TouchUp、TouchMove 三個基礎(chǔ)觸控事件。當(dāng)手指觸碰程序時便會在Canvas 中生成彩色圓圈,圓圈的位置隨手指的移動而改變,手指離開觸屏的同時圓圈消失。接下來將逐一講解每個事件所完成的任務(wù)。

      <Window x:Class="WpfRawTouch.MainWindow"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              Title="MainWindow" Height="350" Width="525">
          <Grid>
              <Canvas x:Name="touchPad" Background="Gray"
                      TouchDown="touchPad_TouchDown" TouchUp="touchPad_TouchUp" 
                      TouchMove="touchPad_TouchMove">
              </Canvas>
          </Grid>
      </Window>
      

           TouchDown 事件主要是完成當(dāng)觸碰產(chǎn)生時在<Canvas> 控件中生成彩色圓圈的任務(wù)(C#代碼如下)。使用Ellipse 創(chuàng)建隨機顏色的圓圈,通過GetTouchPoint 方法獲取觸碰位置點,并調(diào)整圓圈在<Canvas> 中的位置。為了跟蹤手指移動軌跡,需要將觸屏設(shè)備ID 及UI 控件存儲在集合movingEllipses 中。

      private Dictionary<int, Ellipse> movingEllipses = new Dictionary<int, Ellipse>();
      Random rd = new Random();
      
      private void touchPad_TouchDown(object sender, TouchEventArgs e)
      {
          Ellipse ellipse = new Ellipse();
          ellipse.Width = 30;
          ellipse.Height = 30;
          ellipse.Stroke = Brushes.White;
          ellipse.Fill = new SolidColorBrush(
              Color.FromRgb(
                  (byte)rd.Next(0, 255),
                  (byte)rd.Next(0, 255),
                  (byte)rd.Next(0, 255))
                  );
      
          TouchPoint touchPoint = e.GetTouchPoint(touchPad);
          Canvas.SetTop(ellipse, touchPoint.Bounds.Top);
          Canvas.SetLeft(ellipse, touchPoint.Bounds.Left);
      
          movingEllipses[e.TouchDevice.Id] = ellipse;
      
          touchPad.Children.Add(ellipse);
      }

           當(dāng)手指離開觸屏?xí)rTouchUp 事件將被觸發(fā),首先將觸碰設(shè)備從movingEllipses 集合中刪除不再跟蹤手指相關(guān)操作,并從<Canvas> 中將彩色圓圈移除。

      private void touchPad_TouchUp(object sender, TouchEventArgs e)
      {
          movingEllipses.Remove(e.TouchDevice.Id);
          Ellipse ellipse = movingEllipses[e.TouchDevice.Id];
          touchPad.Children.Remove(ellipse);
      }

           當(dāng)手指在觸屏上持續(xù)移動時TouchMove 事件觸發(fā),它來跟蹤手指移動軌跡,并重新調(diào)整圓圈在<Canvas> 中的位置。

      private void touchPad_TouchMove(object sender, TouchEventArgs e)
      {
          Ellipse ellipse = movingEllipses[e.TouchDevice.Id];
          TouchPoint touchPoint = e.GetTouchPoint(touchPad);
          Canvas.SetTop(ellipse, touchPoint.Bounds.Top);
          Canvas.SetLeft(ellipse, touchPoint.Bounds.Left);
      }

      程序演示

           至此,一個簡單的觸控應(yīng)用程序就完成了編譯并運行該程序,用手指觸碰屏幕并持續(xù)移動看看是否會出現(xiàn)下面視頻中的情況(如果沒有多點觸屏設(shè)備請參考這里解決)。

       

      源碼下載

      WpfRawTouch.zip

      作者:李敬然(Gnie)
      出處:{GnieTech} (http://www.cnblogs.com/gnielee/)
      版權(quán)聲明:本文的版權(quán)歸作者與博客園共有。轉(zhuǎn)載時須注明本文的詳細(xì)鏈接,否則作者將保留追究其法律責(zé)任。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多