Windows Touchgestenbeispiel (MTGestures)

In diesem Abschnitt wird das Beispiel Windows Touchgesten beschrieben.

Das beispiel Windows Touch-Geste veranschaulicht, wie Gestenmeldungen zum Übersetzen, Drehen und Skalieren eines Felds verwendet werden, das vom Graphics Device Interface (GDI) gerendert wird, indem die WM_GESTURE wird. Der folgende Screenshot zeigt, wie das Beispiel aussieht, wenn es ausgeführt wird.

Screenshot, der das Beispiel für eine Windows-Touchgeste zeigt, wenn es ausgeführt wird, mit einem gedrehten, schwarz umrandet weißen Rechteck auf dem Bildschirm

Für dieses Beispiel werden Gestenmeldungen an eine Gesten-Engine übergeben, die dann Methoden für Zeichnungsobjekte aufruft, um ein Objekt zu übersetzen, zu drehen und zu skalieren, das über Methoden zum Behandeln dieser Befehle verfügt. Um die Funktionsweise des Beispiels zu beispielen, sollten Sie die Schritte zum Verwenden des Befehls zum Tippen mit zwei Fingern zum Aktivieren oder Deaktivieren diagonaler Linien im gerenderten Feld in Betracht ziehen. Ein Benutzer führt die Geste zum Tippen mit zwei Fingern aus, die eine Meldung generiert, die vom Programm verarbeitet wird. Wenn die Nachricht behandelt wird, wird ein boolescher Wert zum Rendern von Diagonalen im Zeichnungsobjekt umschaltet, und das Objekt rendert dann die diagonalen Linien.

Der folgende Code zeigt, wie Gestenmeldungen von der WndProc-Methode an die Gesten-Engine übergeben werden.

    case WM_GESTURE:
        // The gesture-processing code is implemented in the CGestureEngine
        // class.
        return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
        break;

Der folgende Code zeigt, wie die Gesten-Engine den Befehl zum Tippen mit zwei Fingern behandelt.

// Two-finger tap command
void CMyGestureEngine::ProcessTwoFingerTap(void)
{
    if(_pcRect)
    {
        _pcRect->ToggleDrawDiagonals();
    }
}

Der folgende Code zeigt, wie das Zeichnungsobjekt seine Diagonalen umschaltet.

void ToggleDrawDiagonals(void){_bDrawDiagonals = !_bDrawDiagonals;}

Der folgende Code zeigt, wie das -Objekt diagonale Linien in seiner draw-Methode rendert.

    if(_bDrawDiagonals)
    {
        // draw diagonals
        MoveToEx(hdc,ptRect[0].x,ptRect[0].y,NULL);
        LineTo(hdc,ptRect[2].x,ptRect[2].y);
        MoveToEx(hdc,ptRect[1].x,ptRect[1].y,NULL);
        LineTo(hdc,ptRect[3].x,ptRect[3].y);
    }

Multi-Touch-Gestenanwendung (C#), Multi-Touch-Gestenanwendung (C++), Windows Touchbeispiele