Windows system >> Windowsの知識 >  >> Windows 7システムチュートリアル >> Windows 7システムチュートリアルについて >> 手がコンピューターのWindows 7システム2本指タッチAPIの秘密を再生

手がコンピューターのWindows 7システム2本指タッチAPIの秘密を再生

  
Technologeeko

Windows 7には、ウィンドウグループのプレビュー、デスクトップアイコンのクイック隠し、他のウィンドウの揺れなど、XPおよびVistaシステムでは利用できないいくつかの優れた機能があります。私たちが開発したパーソナルソフトウェアはこれらの機能をどのように使用してユーザーを驚かせますか?

"Minority Report"では、Tomangは2本の指で直接タッチスクリーン上でプログラムを操作していましたが、これは厄介でした。この機能はWin 7でもサポートされています。タッチデバイスがある限り、Win 7で両手を使ってコンピューターを再生することもできます。ズーム、2本指ズーム、2本指フリップ、およびその他の効果などの2本指タッチは、Win 7で実装できます。

よく使われる2つのジェスチャー

1.ズームジェスチャー

ズームジェスチャーは、インターフェイスをズームインまたはズームアウトするために使用されます。写真の閲覧や記事の閲覧などのプログラムでよく使用されます。 2本指ズームのジェスチャを図1に示します。2本の指を1本を上に向けて1本を下に向けてフォームに一緒に配置し、ズームインします。2本の指を別々にフォームに配置し、2点を中央でスライドさせます。縮小します。

プログラムはこのジェスチャを認識する必要があります最初のステップは指からスクリーンにメッセージを受け取ることです。第2のステップでは、2本の指の座標に従って距離が計算され、2本の指間の距離が経験値に従って比較され、2本の指が離れているかまたは2本の指が互いに接近している。第3段階では、タイマーによって指の位置の座標をリアルタイムで把握して移動方向と速度を計算することができ、さらに2本の指が逆スライドか逆スライドかを判断することができる。

2.パンジェスチャー

パンジェスチャーは、ナビゲーションによく使用されます。たとえば、画像ビューアでは、左のパンジェスチャを使用して前のジェスチャに移動し、パンのパンジェスチャを使用して次の画像に移動します。パンジェスチャを図2に示します。両方の指が左または右にスライドします。ユーザーが写真の位置を変更したいのか、ページをめくったのかを区別する方法は?ここでは加速度を使わなければなりません。

指の座標をリアルタイムでタイマーで捉え、速度と加速度を計算し、それを実験値で加速度と比較します加速度が比較的大きい場合はページをめくると見なすことができ、そうでない場合はドラッグします。移動します。ドラッグするときは、プログラムの境界に到達したかどうかをさらに判断する必要があり、境界に到達した場合はページめくりと見なされます。ページめくりの処理については、素早く左に移動すること、または左の境界に達することは前のページと見なされる。

2本指タッチAPIが明らかにする

2本指タッチの中核は、元のタッチデータをモーションモデルに入れてユーザーのジェスチャを計算することです。生のタッチデータはWM_TOUCHメッセージから取得できます。ズームとパンのジェスチャは、WM_TOUCHによって認識されます。

手順1:マルチタッチハードウェアの確認

ここでGetSystemMetrics APIを使用してハードウェアを準備します。

BYTE digitizerStatus =(BYTE)GetSystemMetrics(SM_DIGITIZER);
if((digitizerStatus&(0x80 + 0x40))== 0){
//マルチタッチデバイスが検出されないかデバイスの準備ができていない
} //デバイスサポートを確認するタッチポイント、Win 7では2つのタッチポイントがサポートされるようになりました。BYTE nInputs =(BYTE)GetSystemMetrics(SM_MAXIMUMTOUCHES);

手順2:元のタッチメッセージに切り替える< Br>

デフォルトでは、Win 7はデフォルトでWM_GESTURE(ジェスチャ)メッセージを提供します。このジェスチャは、オリジナルのタッチデータに基づいてシステムが認識するジェスチャであり、RegisterTouchWindow API関数を使用すると、WM_TOUCHのオリジナルタッチ入力メッセージを返すことができます。コアコード:

RegisterTouchWindow(hWnd、0))//hwndは現在のウィンドウです。ハンドル

手順3:生のタッチデータを取得する

GetTouchInputInfo APIを使用して、元のタッチデータを取得します。コアコード:

GetTouchInputInfo((HTOUCHINPUT)lParam、numInputs、ti、sizeof( 5本の指が同時に画面上をスライドしている場合、numInputsは5になります。 tiは、接触のX座標とY座標、発生時刻、およびタッチの種類(マウスの押し、マウスの動き、マウスの離脱などに似ている)を含むTOUCHINPUT構造体です。

for(unsigned int i = 0; i< numInputs; ++ i){//タッチ入力ポイントに応じてループ
if(ti [i] .dwFlags&TOUCHEVENTF_DOWN){
OnTouchDownHandler (hWnd、ti [i]); / /(ti [i] .dwFlags&TOUCHEVENTF_MOVE){OnTouchMoveHandler(hWnd、ti [i]); / / //連絡先移動機能に渡した場合(ti [i] .dwFlags&TOUCHEVENTF_UP){ OnTouchUpHandler(hWnd、ti [i]);} //連絡先解除機能処理に渡した
}

ここでは、押したり、動かしたり、離したりする機能が、実際にはモーションシミュレーションモデルです。このモデルでは、接触の軌跡に対していくつかのモーションカーブを作成して計算する必要があります。各点の方位角、速度、法線加速度、接線加速度などが特定のジェスチャを識別するために抽出される。

ヒント:プログラムでマルチタッチをサポートする最も簡単な方法は、主に次のAPIを使用して、Win 7のジェスチャ認識機能を使用することです。
GetSystemMetrics。マルチタッチハードウェアデバイスかどうかを確認するために使用存在し、準備ができています。
GetGestureInfo。ジェスチャタイプと関連データを取得するために使用されます。

Copyright © Windowsの知識 All Rights Reserved