Condividi tramite


Esempio di movimento tocco di Windows (MTGestures)

Questa sezione descrive l'esempio di movimento tocco di Windows.

L'esempio windows Touch Gesture illustra come usare i messaggi di movimento per tradurre, ruotare e ridimensionare una casella di cui viene eseguito il rendering da GDI (Graphics Device Interface) gestendo il messaggio WM_GESTURE . La schermata seguente mostra l'aspetto dell'esempio durante l'esecuzione.

screenshot che mostra l'esempio di movimento tocco di Windows quando è in esecuzione, con un rettangolo bianco ruotato e con contorno nero sullo schermo

Per questo esempio, i messaggi di movimento vengono passati a un motore di movimenti, che chiama quindi i metodi per disegnare oggetti per tradurre, ruotare e ridimensionare un oggetto che dispone di metodi per la gestione di questi comandi. Per illustrare il funzionamento dell'esempio, prendere in considerazione i passaggi per l'uso del comando di tocco a due dita per abilitare o disabilitare le righe diagonali nella casella di cui è stato eseguito il rendering. Un utente esegue il gesto di tocco a due dita, che genera un messaggio gestito dal programma. Quando il messaggio viene gestito, verrà attivato o disattivato un valore Boolean per il rendering delle diagonali sull'oggetto disegno e l'oggetto eseguirà il rendering delle linee diagonali.

Nel codice seguente viene illustrato il modo in cui i messaggi di movimento vengono passati al motore dei movimenti dal metodo WndProc.

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

Il codice seguente illustra come il motore dei movimenti gestisce il comando tocco a due dita.

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

Nel codice seguente viene illustrato come l'oggetto di disegno attiva/disattiva le diagonali.

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

Nel codice seguente viene illustrato come l'oggetto esegue il rendering delle linee diagonali nel relativo metodo di disegno.

    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);
    }

Applicazione movimenti multitocco (C#), applicazione movimenti multitocco (C++),esempi di tocco di Windows