九九99精品-九九99靖品-九九99九九视频在线观看-九九99九九在线精品视频-曰韩一级-曰韩一级毛片

C# & WinForm開發觸控應用程式

作者: 51Touch     時間:2009-12-04     源于:runpc    總點擊:
【導讀】:多點觸控(Multi Touch)是微軟新一代作業系統Windows 7較受關注的特點之一,本文將使用Visual C# 2008建立一個Windows Form應用程式,并說明如何取得觸控動作相關資訊。

    北京時間12月04日消息,中國觸摸屏網訊, 多點觸控(Multi Touch)是微軟新一代作業系統Windows 7較受關注的特點之一,本文將使用Visual C# 2008建立一個Windows Form應用程式,并說明如何取得觸控動作相關資訊。

    本文來自:http://www.zc28898.cn/touchscreen/news/front/200912/04-4057.html

    在Windows 7的Home Premium、Professional、Enterprise和Ultimate版本中,只要搭配支援多點觸控的硬體即可使用多點觸控功能。而應用程式方面,對觸控的支援則可分為三個等級:Good、Better和Best(請參考表1)。

    Good等級表示不需要修改程式碼可直接支援數個基本的手勢;Better等級要能針對各種不同的手勢做出合理自然的互動;Best等級則是使用更進階的功能處理更詳細的資訊,自訂各種觸控操作經驗。

    Windows 7支援的手勢有9種(參考表2),我們可以看到除了Rotate和Two-Finger Tap之外,其馀手勢都可以對應到傳統的滑鼠或鍵盤的操作,也就是說應用程式不需大幅修改既有的程式,即可支援Windows 7大部分的手勢,然而你也可以在程式中重新定義這些手勢所對應的動作。 

    如何取得設備資訊?

    在開始處理觸控動作前,你可以呼叫GetSystemMetrics并傳入SM_DIGITIZER來得知目前電腦的觸控支援能力(參考程式1),根據GetSystemMetrics的傳回值,即可得知相關資訊(參考表3)。若你沒有適當的觸控硬體,可以使用Multi-Touch Vista這個軟體搭配2隻滑鼠模擬2點輸入。

    如何取得觸控訊息?
 
    為了支援觸控動作,Windows 7定義了2個新的視窗訊息:WM_GESTURE與WM_TOUCH。Windows 7中的視窗預設只會收到WM_GESTURE訊息,若呼叫了RegisterTouchWindow之后則會變成只會收到WM_TOUCH訊息,然而本文將專注于探討WM_GESTURE訊息。

    由于目前的WinForm尚未將這2個訊息轉換為控制項的事件,所以為了處理這2個訊息,最直接的方式就是覆寫控制項的WndProc方法。在本文的范例中,我們覆寫Form的WndProc方法,如此便能處理表單上的觸控動作(參考程式2)。

    若你要讓其他控制項支援觸控動作,則必須另外繼承該控制項,并覆寫其WndProc方法,或是在表單的WndProc方法中實作判斷觸控目的控制項的邏輯。

    在收到一個手勢的第一個WM_GESTURE訊息前,程式會先收到一個WM_GESTURENOTIFY訊息,你可以在此時呼叫SetGestureConfig并帶入GESTURECONFIG結構,設定目前要接受或忽略哪些手勢。

    也可以在視窗一載入時就先設定好(參考程式3)。視窗預設不會收到關于Rotate手勢的訊息,若想收到所有手勢的訊息則必須呼叫 SetGestureConfig 做設定,詳細的設定項目請參考:http://msdn.microsoft.com/library/dd353241.aspx。

    如何解讀觸控資訊?

    在手勢作用的過程中成是會收到多個WM_GESTURE訊息,其所帶的參數可用來取得GESTUREINFO結構(參考程式4),其中比較重要的部分是dwFlags、dwID、ptsLocation以及ullArguments。dwID可用來分辨是哪種手勢(參考表4),dwFlags表示手勢的狀態(開始、慣性動作、停止),ptsLocation及ullArguments則根據不同的手勢有不同的意義,詳細資訊請參考:http://msdn.microsoft.com/library/dd353242.aspx。

    在此我們只看到5種Gesture ID,但前文卻提到了9種手勢,這是因為Flicks (筆觸,根據滑動方向提供一組功能)是對應到Pan手勢或鍵盤動作,而其他3種手勢只會引發單純的滑鼠事件。在滑鼠事件處理常式中,利用GetMessageExtraInfo可得知事件是由滑鼠還是觸控所產生,進而做不同的處理(參考程式5)。

    本文中的范例會于收到WM_GESTURE訊息時,在DecodeGesture方法中利用GetGestureInfo來取得與手勢相關的GESTUREINFO結構,并根據不同的手勢做對應的動作(參考程式6)。需注意的是,處理完之后必須呼叫CloseGestureInfoHandle關閉GESTUREINFO的handle,否則會造成記憶體遺漏。

 

 

    處理Pan手勢的小技巧

    在處理Pan手勢時,為了避免Windows將手勢誤判為Flicks,造成不良的使用經驗,最好暫時關閉Flicks的功能。此動作可以在控制項載入時就呼叫SetProp進行設定(參考程式7),或是在WndProc中收到WM_TABLET_QUERYSYSTEMGESTURESTATUS訊息時設定m.Result為TABLET_DISABLE_FLICKS(參考程式8)。其他可設定的項目請參考http://msdn.microsoft.com/en-us/library/bb969148.aspx。

    結語

    了解以上處理WM_GESTURE訊息的方式之后,即可試著閱讀并修改Windows 7 SDK中的MTGestures范例程式。該范例會在表單上繪製一個長方形,并依據不同的手勢對表單上的長方形做出不同的動作。


    觸摸屏與OLED網推出微信公共平臺,每日一條微信新聞,涵蓋觸摸屏材料、觸摸屏設備、觸控面板行業主要資訊,第一時間了解觸摸屏行業發展動態。關注辦法:微信公眾號“i51touch” 或微信中掃描下面二維碼關注,或這里查看詳細步驟
相關閱讀:3D打印    模具產業    微鑄鍛技術    石墨烯    OLED面板    夏普    iPhone 8    半導體    蘋果    
關于我們 | 廣告服務 | 聯系我們 | 版權聲明 | 隱私政策 | 網站地圖 | 友情鏈接 | 歡迎投稿 | 加入收藏 | 意見反饋 | 經銷商加入
網站廣告、經銷商加盟、觸摸屏軟件銷售: 028-85108892 13183843395 028-66219290 聯系人: 張小姐 產品購買聯系方式如下:
地址:成都市高升橋東路2號高盛中心1109室 電話: 028-85108892 13183843395 028-66219290
版權所有 Copyright(C) 2003-2015 All rights reserved 中國觸摸屏網 電子郵件: 51touch@126.com touch8@gmail.com
業務合作QQ:觸摸屏技術,觸摸屏報價,觸摸屏軟件咨詢 43361182 觸摸屏軟件制作與技術支持:觸摸屏軟件,觸摸查詢系統,觸摸查詢軟件 893008608 媒體合作QQ: 893008608

2000人超級QQ觸摸屏群:59897879 171220106


分享到