首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 多點觸控開發:基礎觸控操作

     編輯:關於.NET

Raw Touch 事件簡介

WPF 4 將每根手指視為獨立觸控裝置,分配唯一 ID 追蹤。三個基礎事件:

  • TouchDown:手指接觸螢幕。
  • TouchMove:手指在螢幕移動。
  • TouchUp:手指離開螢幕。

範例:觸控點繪製彩色圓圈

XAML

<Canvas x:Name="touchPad" Background="Gray"
    TouchDown="touchPad_TouchDown"
    TouchMove="touchPad_TouchMove"
    TouchUp="touchPad_TouchUp" />

程式碼後置

TouchDown:建立圓圈並加入追蹤字典

private Dictionary<int, Ellipse> movingEllipses = new Dictionary<int, Ellipse>();
private Random rd = new Random();

private void touchPad_TouchDown(object sender, TouchEventArgs e)
{
    Ellipse ellipse = new Ellipse
    {
        Width = 30,
        Height = 30,
        Stroke = Brushes.White,
        Fill = new SolidColorBrush(Color.FromRgb(
            (byte)rd.Next(0, 255),
            (byte)rd.Next(0, 255),
            (byte)rd.Next(0, 255)))
    };

    TouchPoint tp = e.GetTouchPoint(touchPad);
    Canvas.SetTop(ellipse, tp.Bounds.Top);
    Canvas.SetLeft(ellipse, tp.Bounds.Left);

    movingEllipses[e.TouchDevice.Id] = ellipse;
    touchPad.Children.Add(ellipse);
}

TouchMove:更新圓圈位置

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

TouchUp:移除圓圈與追蹤

private void touchPad_TouchUp(object sender, TouchEventArgs e)
{
    movingEllipses.Remove(e.TouchDevice.Id);
    Ellipse ellipse = movingEllipses[e.TouchDevice.Id]; // 註:原文有誤,應先取出再移除
    touchPad.Children.Remove(ellipse);
}

執行示範

影片:YouKu 觀看

原始碼下載

WpfRawTouch.zip

出處:https://www.cnblogs.com/gnielee/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved