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