Sdílet prostřednictvím


Ukázka gest dotykového ovládání Windows (MTGestures)

Tato část popisuje ukázku gest dotykového ovládání windows.

Ukázka dotykového gesta systému Windows ukazuje, jak pomocí zpráv gest přeložit, otočit a škálovat objekt vykreslený pomocí rozhraní grafického zařízení (GDI) zpracováním zprávy WM_GESTURE . Následující snímek obrazovky ukazuje, jak příklad vypadá při spuštění.

snímek obrazovky znázorňující ukázku gest dotykového ovládání ve Windows, když je spuštěný, s otočeným bílým obdélníkem s černým obrysem na obrazovce

Pro tuto ukázku se zprávy gest předávají modulu gest, který pak volá metody nakreslených objektů k překladu, otočení a škálování objektu, který má metody pro zpracování těchto příkazů. Pokud chcete ukázat, jak ukázka funguje, zvažte postup použití příkazu dvou prstu pro povolení nebo zakázání diagonálních čar v vykresleném poli. Uživatel provede gesto klepnutí dvěma prsty, které vygeneruje zprávu, která je zpracována programem. Když je zpráva zpracována, přepne logickou hodnotu pro vykreslení diagonálů na nakreslený objekt a objekt pak vykresluje diagonální čáry.

Následující kód ukazuje, jak se zprávy gest předávají modulu gest z metody WndProc.

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

Následující kód ukazuje, jak modul gest zpracovává příkaz dvou prstem klepnutím.

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

Následující kód ukazuje, jak nakreslený objekt přepíná diagonály.

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

Následující kód ukazuje, jak objekt vykresluje diagonální čáry v jeho kreslicí metodě.

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

aplikace s více dotykovými gesty (C#), vícedotyková gesta aplikace (C++), ukázky dotykového ovládání systému Windows