Win7屏幕觸控API揭秘
Win7的酷炫功能 Win7有一些酷炫的功能是XP、Vista系統(tǒng)沒有的,例如窗口分組預(yù)覽、快速隱藏桌面圖標、搖走其他窗口……這些酷炫的功能是怎么設(shè)計的?我們開發(fā)的個人軟件如何使用這些功能,給用戶帶
Win7的酷炫功能
Win7有一些酷炫的功能是XP、Vista系統(tǒng)沒有的,例如窗口分組預(yù)覽、快速隱藏桌面圖標、搖走其他窗口……這些酷炫的功能是怎么設(shè)計的?我們開發(fā)的個人軟件如何使用這些功能,給用戶帶來驚喜?
雙指觸控功能
在《少數(shù)派報告》中阿湯哥直接用雙指在觸摸屏上操作程序,酷斃了。這種功能Win7也支持,只要有觸摸設(shè)備,我們也可以在Win7上用雙手玩轉(zhuǎn)電腦。雙指觸控如縮放、雙指放大、雙指翻頁等特效都可以在Win7中實現(xiàn)。
Win7常用的兩種觸控手勢
1. 縮放手勢
縮放手勢用于界面放大或縮小,在瀏覽圖片、文章閱讀等程序中常常會用到。雙指縮放的手勢如圖1所示:雙指并攏置于窗體中,一指向上滑動,一指向下滑動,這是放大,雙指分開置于窗體上,兩指向中間滑動,則是縮小。程序要識別出這個手勢,需要進行以下步驟:
1. 得到手指點到屏幕的消息
2. 根據(jù)兩指的坐標計算出距離
3. 根據(jù)定時器實時捕捉手指點的坐標來計算移動方向及速率,進一步判斷出手勢類型
2. 平移手勢
平移手勢往往用于導(dǎo)航。例如在一個圖片查看程序中,使用向左平移手勢可以導(dǎo)航到上一張,使用向右平移手勢導(dǎo)航到下一張圖片。平移手勢如圖2所示:雙指同時向左滑動或向右滑動。要區(qū)分用戶是要改變圖片的位置還是翻頁,需要使用加速度。通過定時器實時捕捉手指坐標,計算出速率和加速度,并通過經(jīng)驗值與加速度比較來判斷手勢類型。
雙指觸控API揭秘
雙指觸控的核心是將原始觸摸數(shù)據(jù)放入運動模型中去計算,以識別出用戶的手勢。原始觸摸數(shù)據(jù)可以從WM_TOUCH消息中得到,通過WM_TOUCH識別出縮放和平移手勢。
第一步:檢查多點觸控硬件
使用GetSystemMetrics API來獲取硬件是否就緒。如果沒檢測到多點觸控設(shè)備或設(shè)備沒有就緒,則無法使用觸摸功能。
第二步:切換到原始觸摸消息
在默認情況下,Win7默認提供WM_GESTURE(手勢)消息。使用RegisterTouchWindow API函數(shù)可讓系統(tǒng)返回WM_TOUCH原始觸摸輸入消息,通過這個消息可以得到原始觸摸數(shù)據(jù)。
第三步:得到原始觸摸數(shù)據(jù)
使用GetTouchInputInfo API得到原始觸摸數(shù)據(jù),可以獲取觸點的X和Y坐標、發(fā)生時間、觸摸類型等信息。
以上是基本的雙指觸控API揭秘,利用這些API可以開發(fā)出支持多點觸控的應(yīng)用程序,為用戶帶來更好的操作體驗。