一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

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

  創(chuàng)建項目

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

<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 事件主要是完成當觸碰產(chǎn)生時在<Canvas> 控件中生成彩色圓圈的任務(C#代碼如下)。使用Ellipse 創(chuàng)建隨機顏色的圓圈,通過GetTouchPoint 方法獲取觸碰位置點,并調整圓圈在<Canvas> 中的位置。為了跟蹤手指移動軌跡,需要將觸屏設備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);
}

  當手指離開觸屏時TouchUp 事件將被觸發(fā),首先將觸碰設備從movingEllipses 集合中刪除不再跟蹤手指相關操作,并從<Canvas> 中將彩色圓圈移除。

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

  當手指在觸屏上持續(xù)移動時TouchMove 事件觸發(fā),它來跟蹤手指移動軌跡,并重新調整圓圈在<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);
}

  程序演示

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

  源碼下載:WpfRawTouch.zip

NET技術WPF Multi-Touch 開發(fā):基礎觸屏操作(Raw Touch),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲视频免费一区 | 久久综合九色综合欧洲 | 欧美一级做 | 久久久久avav久久久 | 在线观看亚洲精品国产 | 99成人在线观看 | 成人综合久久精品色婷婷 | 免费一区区三区四区 | 色婷婷中文字幕在线一区天堂 | 91人碰 | 久久国产精品麻豆映画 | 国产美女白丝袜精品_a不卡 | 成人黄色小视频在线观看 | 韩国一级永久免费观看网址 | 国产成人综合在线观看网站 | 青草欧美| 国内精品视频区在线2021 | 一本色道久久鬼综合88 | 欧美14p| 国产乱子伦露脸在线 | 欧美人与禽zoz0性伦交 | 中文字幕一区二区三区四区五区 | 国内精品自在自线2020 | 美女很黄很黄是免费的·无遮挡网站 | 久久青草精品免费资源站 | 夜色成人免费观看 | 亚洲一二三区久久五月天婷婷 | 国产亚洲综合成人91精品 | 看全色黄大色大片免费久久怂 | 午夜激情小视频 | 亚洲视频在线网站 | 国产综合变态自虐重口另类 | 麻豆精品国产自产在线 | 欧美成人高清在线视频大全 | 人人公开免费超级碰碰碰视频 | 91久久综合精品国产丝袜长腿 | 四虎影视永久在线 yin56xyz | 欧美视频在线观看网站 | 色综合精品久久久久久久 | 84pao强力永久免费高清 | 婷婷综合另类小说色区 |