Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Navrhněte aplikaci s očekáváním, že dotykové ovládání bude primární metodou zadávání vašich uživatelů. Pokud používáte ovládací prvky WinUI, podpora touchpadu, myši a pera nevyžaduje žádné další programování, protože aplikace WinUI tuto funkci poskytují zdarma.
Mějte ale na paměti, že uživatelské rozhraní optimalizované pro dotykové ovládání není vždy nadřazené tradičnímu uživatelskému rozhraní. Obě poskytují výhody a nevýhody, které jsou jedinečné pro technologii a aplikaci. Při přechodu na uživatelské rozhraní zaměřené primárně na dotykové ovládání je důležité pochopit základní rozdíly mezi dotykem, touchpadem, perem/stylusem, myší a vstupem z klávesnice.
Important API: Microsoft. UI. Xaml.Input, Windows. UI. Core, Windows. Devices.Input
Mnoho zařízení má vícedotykové obrazovky, které podporují použití jednoho nebo více prstů (nebo dotykových kontaktů) jako vstupu. Dotykové kontakty a jejich pohyb se interpretují jako dotyková gesta a manipulace s nimi, aby podporovaly různé interakce uživatelů.
Windows app zahrnuje řadu různých mechanismů pro zpracování dotykového vstupu, což umožňuje vytvořit imerzivní prostředí, které můžou uživatelé zkoumat s jistotou. Tady probereme základy používání dotykového vstupu v Windows app.
Dotykové interakce vyžadují tři věci:
- Dotykový displej.
- Přímý kontakt (nebo přiblížení, pokud má displej senzory přiblížení a podporuje detekci přiblížení) jednoho nebo více prstů na daném displeji.
- Pohyb dotykových kontaktů (nebo jejich nedostatek na základě prahové hodnoty času)
Vstupní data poskytovaná dotykovým senzorem můžou být následující:
- Interpretováno jako fyzické gesto pro přímou manipulaci s jedním nebo více prvky uživatelského rozhraní, jako je posouvání, otočení, změna velikosti nebo přesunutí. (Naproti tomu se interakce s prvkem prostřednictvím jeho okna vlastností, dialogového okna nebo jiné usnadnění uživatelského rozhraní považuje za nepřímou manipulaci.)
- Je rozpoznáván jako alternativní způsob zadávání, jako je myš nebo pero.
- Používá se k doplnění nebo úpravě aspektů jiných vstupních metod, jako je rozmazání inkoustového tahu nakresleného perem.
Dotykové zadávání obvykle zahrnuje přímou manipulaci s prvkem na obrazovce. Prvek okamžitě reaguje na jakýkoli kontakt dotyku v jeho testovací oblasti a reaguje odpovídajícím způsobem na jakýkoli následný pohyb dotykových kontaktů, včetně odebrání.
Vlastní dotyková gesta a interakce by měly být navrženy pečlivě. Měly by být intuitivní, responzivní a zjistitelné a měly by uživatelům umožnit prozkoumávat vaši aplikaci s jistotou.
Zajistěte, aby funkce aplikace byly konzistentně vystaveny napříč všemi podporovanými vstupními typy zařízení. V případě potřeby použijte nějakou formu nepřímého vstupního režimu, jako je zadávání textu pro interakce s klávesnicí nebo prvky uživatelského rozhraní pro myš a pero.
Mějte na paměti, že tradiční vstupní zařízení (například myš a klávesnice) jsou známá a atraktivní pro mnoho uživatelů. Můžou nabízet rychlost, přesnost a hmatovou zpětnou vazbu, kterou dotyk nemůže nabídnout.
Poskytování jedinečných a výrazných prostředí interakce pro všechna vstupní zařízení bude podporovat nejširší škálu možností a preferencí, apelovat na nejširší možnou cílovou skupinu a přilákat více zákazníků k vaší aplikaci.
Porovnání požadavků na dotykové interakce
Následující tabulka uvádí některé rozdíly mezi vstupními zařízeními, která byste měli zvážit při návrhu dotykových aplikací pro Windows.
| Faktor | Dotykové interakce | Interakce mezi myší, klávesnicí, perem a stylusem | Touchpad |
|---|---|---|---|
| Přesnost | Kontaktní oblast prstu je větší než jedna souřadnice x-y, což zvyšuje pravděpodobnost nechtěných aktivací příkazů. | Myš a pero poskytují přesnou souřadnici x-y. | Stejné jako myš. |
| Tvar oblasti kontaktu se během pohybu změní. | Pohyby myši a tahy pera poskytují přesné souřadnice x-y. Fokus klávesnice je explicitní. | Stejné jako myš. | |
| Není k dispozici žádný kurzor myši, který by vám pomohl s cílením. | Kurzor myši, kurzor pera a fokus klávesnice vám pomůžou s cílením. | Stejné jako myš. | |
| Lidská anatomie | Pohyby prstů jsou nepřesné, protože přímý pohyb jedním nebo více prsty je obtížné. To je způsobeno zakřivení kloubů rukou a počtem kloubů zapojených do pohybu. | Je jednodušší provádět přímý pohyb myší nebo perem, protože ruka, která je řídí, cestuje kratší fyzickou vzdáleností než kurzor na obrazovce. | Stejné jako myš. |
| Některé oblasti na dotykovém povrchu zobrazovacího zařízení mohou být obtížně dosažitelné z důvodu držení prstu a úchopu uživatele zařízení. | Myš a pero se můžou dostat na libovolnou část obrazovky, zatímco ovládání by mělo být přístupné pomocí klávesnice prostřednictvím pořadí ovládacích prvků. | Držení prstů a úchop může být problém. | |
| Objekty mohou být zakryty jedním nebo více prsty nebo rukou uživatele. To se označuje jako okluze. | Nepřímá vstupní zařízení nezpůsobují okluzi. | Stejné jako myš. | |
| Stav objektu | Dotykové ovládání používá dvoustavový model: dotykový povrch zobrazovacího zařízení je buď dotknutý (zapnuto), nebo není (vypnuto). Neexistuje žádný stav při najetí myší, který by mohl vyvolat další vizuální zpětnou vazbu. | Myš, pero/stylus a klávesnice u všech vystavují model se třemi stavy: vypnuto (nahoru), zapnuto (dolů) a vznášení (fokus). Přejetí myší umožňuje uživatelům prozkoumávat a učit se prostřednictvím nápověd přidružených k prvkům uživatelského rozhraní. Efekty najetí myší a fokusu mohou naznačovat, které objekty jsou interaktivní, a také usnadňují zaměřování. |
Stejné jako myš. |
| Bohatá interakce | Podporuje vícedotykové ovládání: několik dotykových bodů (prstů) na dotykovém povrchu. | Podporuje jeden vstupní bod. | Stejně jako dotykové ovládání. |
| Podporuje přímou manipulaci s objekty pomocí gest, jako jsou klepnutí, přetažení, posunutí, sevření a otáčení. | Neexistuje podpora pro přímou manipulaci, protože myš, pero/stylus a klávesnice jsou nepřímá vstupní zařízení. | Stejné jako myš. |
Poznámka:
Nepřímý vstup měl výhodu více než 25 let zdokonalování. Funkce jako vyskakovací nápovědy při najetí myší byly navrženy tak, aby řešily prozkoumávání uživatelského rozhraní speciálně pro vstupy z touchpadu, myši, pera/stylusu a klávesnice. Podobné funkce uživatelského rozhraní byly znovu navrženy pro bohaté prostředí poskytované dotykovým vstupem, aniž by to ovlivnilo uživatelské prostředí pro tato další zařízení.
Použití dotykové zpětné vazby
Vhodná vizuální zpětná vazba během interakcí s vaší aplikací pomáhá uživatelům rozpoznat, učit se a přizpůsobovat jejich interakcím jak aplikací, tak platformou Windows. Vizuální zpětná vazba může indikovat úspěšné interakce, stav systému předávání, zlepšit smysl řízení, snížit chyby, pomoct uživatelům pochopit systém a vstupní zařízení a podpořit interakci.
Vizuální zpětná vazba je důležitá, když uživatel spoléhá na dotykové zadání pro aktivity, které vyžadují přesnost a přesnost na základě polohy. Zpětnou vazbu můžete zobrazit vždy a kdekoli, kde je zjištěn vstup dotykového ovládání, aby uživatel porozuměl všem vlastním pravidlům cílení, která jsou definovaná vaší aplikací a jeho ovládacími prvky.
Targeting
Cílení je optimalizované prostřednictvím:
Velikosti dotykových cílů
Jasné pokyny pro velikost zajišťují, aby aplikace poskytovaly pohodlné uživatelské rozhraní, které obsahuje objekty a ovládací prvky, které jsou snadno a bezpečně zacílené.
Geometrie kontaktu
Celá oblast kontaktu prstu určuje nejpravděpodobnější cílový objekt.
Scrubbing
Položky ve skupině lze snadno znovu zaměřit přejetím prstem mezi nimi (například rádiových tlačítek). Aktuální položka se aktivuje při uvolnění dotykového ovládání.
Houpací
Hustě zabalené položky (například hypertextové odkazy) se snadno přemístí tím, že přitlačíte prst pevně dolů a, aniž byste posouvali, střídavě pohybujte nad položkami. Vzhledem k okluzi se aktuální položka identifikuje prostřednictvím popisku nebo stavového řádku a aktivuje se při uvolnění dotykového ovládání.
Přesnost
Navrhněte pro nedbalé interakce pomocí:
- Body přichycení, které mohou uživatelům usnadnit zastavení na požadovaných položkách při práci s obsahem.
- Směrové "kolejnice", které mohou pomoci se svislým nebo vodorovným posouváním, i když se ruka pohybuje v mírném oblouku. Další informace naleznete v tématu Pokyny pro posouvání.
Okluze
Zabrání se překrytí prstů a rukou pomocí:
Velikost a umístění uživatelského rozhraní
Aby prvky uživatelského rozhraní byly dostatečně velké, aby je oblast kontaktu prstem úplně nepokryla.
Kdykoli je to možné, umístěte nabídky a automaticky otevíraná okna nad oblast kontaktu.
Nápověda
Zobrazí popisy, když uživatel drží prst na objektu. To je užitečné pro popis funkčnosti objektu. Uživatel může špičkou prstu táhnout mimo objekt, aby se zabránilo vyvolání popisu.
U malých objektů posuňte popisky tak, aby nebyly pokryty oblastí kontaktu prstu. To je užitečné pro cílení.
Úchyty pro přesnost
Pokud je vyžadována přesnost (například výběr textu), použijte úchyty pro výběr, které jsou posunuty tak, aby zlepšily přesnost. Další informace najdete v tématu Pokyny o výběru textu a obrázků (aplikacemi prostředí Windows Runtime).
Načasování
Vyhněte se změnám časového režimu ve prospěch přímé manipulace. Přímá manipulace simuluje přímé fyzické zpracování objektu v reálném čase. Objekt reaguje při přesouvání prstů.
Časovaná interakce na druhé straně nastane po dotykové interakci. Časové interakce obvykle závisejí na neviditelných prahových hodnotách, jako je čas, vzdálenost nebo rychlost, a určují, jaký příkaz se má provést. Časové interakce nemají žádnou vizuální zpětnou vazbu, dokud systém neprovede akci.
Přímá manipulace poskytuje řadu výhod v průběhu časových interakcí:
- Díky okamžité vizuální zpětné vazbě během interakcí se uživatelé cítí více zainteresovaní, jistější a soběstačnější.
- Přímá manipulace usnadňuje prozkoumání systému, protože jsou nevratné – uživatelé můžou snadno procházet svými akcemi logickým a intuitivním způsobem.
- Interakce, které přímo ovlivňují objekty a napodobují interakce reálného světa, jsou intuitivnější, zjistitelné a zapamatovatelné. Nespoléhají na nejasné ani abstraktní interakce.
- Časové interakce můžou být obtížné provádět, protože uživatelé musí dosáhnout libovolných a neviditelných prahových hodnot.
Kromě toho důrazně doporučujeme následující:
- Manipulace by neměla být rozlišena počtem použitých prstů.
- Interakce by měly podporovat složené manipulace. Například přiblížením pomocí sevření prstů a současným posouváním prstů rozšiřujte pohled.
- Interakce by se neměly rozlišovat podle času. Stejná interakce by měla mít stejný výsledek bez ohledu na čas potřebný k jeho provedení. Aktivace na základě času představují pro uživatele povinná zpoždění a ubírají jak z imerzivní povahy přímé manipulace, tak z pocitu odezvy systému.
Poznámka:
Výjimkou je, že používáte konkrétní časově uspořádané interakce, které vám pomůžou při učení a zkoumání (například stisknutí a podržení).
- Vhodné popisy a vizuální pomůcky mají velký vliv na používání pokročilých interakcí.
Zobrazení aplikací
Vylepšete uživatelskou zkušenost prostřednictvím nastavení posouvání a zoomování v zobrazení vaší aplikace. Zobrazení aplikace určuje, jak uživatel přistupuje a manipuluje s aplikací a jejím obsahem. Zobrazení také poskytují chování, jako je setrvačnost, odražení hranice obsahu a body přichycení.
Nastavení panoramování a rolování v ovládacím prvku ScrollViewer určuje, jak uživatelé navigují v rámci jednoho zobrazení, když se obsah nevejde do zorného pole. Jedním zobrazením může být například stránka časopisu nebo knihy, struktura složek počítače, knihovna dokumentů nebo fotoalbum.
Nastavení lupy platí pro optické přiblížení (podporované ovládacím prvkem ScrollViewer) a ovládacím prvkem Sémantické přiblížení. Sémantický zoom je technika optimalizovaná pro dotykové ovládání prezentace a procházení velkých sad souvisejících dat nebo obsahu v rámci jednoho zobrazení. Funguje pomocí dvou různých režimů klasifikace nebo úrovní přiblížení. Je to analogické k posouvání a rolování v rámci jednoho zobrazení. Posouvání a rolování lze použít ve spojení se sémantickým přiblížením.
Pomocí zobrazení a událostí aplikace můžete upravit chování při posouvání a přibližování. To může poskytovat plynulejší prostředí interakce, než je možné prostřednictvím zpracování událostí ukazatele a gest.
Další informace o zobrazeních aplikace najdete v tématu Ovládací prvky, rozložení a text.
Vlastní dotykové interakce
Pokud implementujete vlastní podporu interakce, mějte na paměti, že uživatelé očekávají intuitivní prostředí zahrnující přímou interakci s prvky uživatelského rozhraní ve vaší aplikaci. Doporučujeme modelovat vlastní interakce v knihovnách ovládacích prvků platformy, aby byly věci konzistentní a zjistitelné. Ovládací prvky v těchto knihovnách poskytují kompletní prostředí interakce uživatelů, včetně standardních interakcí, animovaných fyzikálních efektů, vizuální zpětné vazby a přístupnosti. Vytvořte vlastní interakce jenom v případě, že existuje jasný, dobře definovaný požadavek a základní interakce nepodporují váš scénář.
Důležité
Windows 11 a novější
Některé interakce se třemi a čtyřmi prsty přestanou ve výchozím nastavení fungovat v aplikacích pro Windows.
Ve výchozím nastavení systém využívá interakce se třemi a čtyřmi prsty pro operace, jako je přepínání nebo minimalizace oken a změna virtuálních ploch. Vzhledem k tomu, že tyto interakce se teď zpracovávají na úrovni systému, může tato změna ovlivnit funkčnost vaší aplikace.
Pro podporu interakcí se třemi nebo čtyřmi prsty v rámci aplikace se zavedlo nové uživatelské nastavení, které určuje, jestli systém tyto interakce zpracovává nebo ne:
Bluetooth & zařízení > dotyk > "tří- a čtyřprstová dotyková gesta"
Když je nastavená možnost Zapnuto (výchozí), systém bude zpracovávat všechny interakce se třemi a čtyřmi prsty (aplikace je nebudou moct podporovat).
Když je tato možnost nastavená na Vypnuto, můžou aplikace podporovat interakce se třemi a čtyřmi prsty (systém je nezpracuje).
Pokud vaše aplikace musí tyto interakce podporovat, doporučujeme informovat uživatele o tomto nastavení a poskytnout odkaz, který spustí nastavení Windows na příslušnou stránku (ms-settings:devices-touch). Další podrobnosti najdete v tématu Spuštění nastavení systému Windows.
Pokud chcete poskytnout přizpůsobenou podporu dotykového ovládání, můžete zpracovávat různé události UIElement. Tyto události jsou seskupeny do tří úrovní abstrakce.
Statické události gest se aktivují po dokončení interakce. K událostem gest patří Tapnuté, Dvojité tapnutí, Pravé tapnutía Podržení.
Události gest u konkrétních prvků můžete zakázat nastavením IsTapEnabled, IsDoubleTapEnabled, IsRightTapEnabled, a IsHoldingEnabled na false.
Události ukazatele, jako jsou PointerPressed a PointerMoved, poskytují podrobné informace o každý dotykový kontakt, včetně pohybu ukazatele a schopnosti rozlišovat mezi událostmi stisku a uvolnění.
Ukazatel je obecný vstupní typ s jednotným mechanismem událostí. Zveřejňuje základní informace, jako je například pozice obrazovky, na aktivním vstupním zdroji, který může být dotykový, touchpad, myš nebo pero.
Události gest manipulace, například ManipulationStarted, označují probíhající interakci. Začnou fungovat, když se uživatel dotkne prvku, a přetrvávají, dokud uživatel nezvedne prsty nebo se manipulace nezruší.
Mezi události manipulace patří vícedotykové interakce, například přiblížení, posouvání nebo otáčení, a interakce využívající údaje o setrvačnosti a rychlosti, jako je tažení. Informace poskytované událostmi manipulace neidentifikují formu provedené interakce, ale obsahují data, jako je pozice, rozdíl překladu a rychlost. Tato dotyková data můžete použít k určení typu interakce, která se má provést.
Tady je základní sada dotykových gest podporovaných rozhraním WinUI.
| Název | Typ | Description |
|---|---|---|
| Klepnutí | Statické gesto | Jedním prstem se dotknete obrazovky a zvedne se nahoru. |
| Stiskněte a podržte | Statické gesto | Jedním prstem se dotknete obrazovky a zůstane na místě. |
| Snímek | Manipulační gesto | Jeden nebo více prstů se dotkne obrazovky a přesune se stejným směrem. |
| Swipe | Manipulační gesto | Jeden nebo více prstů se dotkne obrazovky a posune krátkou vzdálenost ve stejném směru. |
| Obrátit | Manipulační gesto | Dva nebo více prstů se dotkne obrazovky a pohybuje se ve směru hodinových ručiček nebo proti směru hodinových ručiček. |
| Štípnutí | Manipulační gesto | Dva nebo více prstů se dotkne obrazovky a přibližuje se k sobě. |
| Roztáhnout | Manipulační gesto | Dva nebo více prstů se dotknou obrazovky a oddálí se od sebe. |
Události gest
Podrobnosti o jednotlivých ovládacích prvcích naleznete v tématu seznam ovládacích prvků.
Události ukazatele
Události ukazatele jsou vyvolány různými aktivními vstupními zdroji, včetně dotyku, touchpadu, pera a myši a nahrazují tradiční události myši.
Události ukazatele jsou založeny na jednom vstupním bodu (prst, pero, kurzor myši) a nepodporují interakce založené na rychlosti.
Tady je seznam událostí ukazatele a jejich souvisejícího argumentu události.
| Událost nebo kurs | Description |
|---|---|
| PointerPressed | Nastane, když se jedním prstem dotkne obrazovky. |
| Uvolnění ukazatele | Dojde k tomu, když je stejný dotykový kontakt zvednut. |
| ukazatel se pohnul | Nastane, když je ukazatel přetažen přes obrazovku. |
| PointerEntered | Nastane, když ukazatel přejde do oblasti testu zasažení prvku. |
| PointerExited | Nastane, když ukazatel opustí oblast pro test zásahu prvku. |
| ZrušenoUkazatel | Nastane, když dojde k neobvyklé ztrátě dotykového kontaktu. |
| ZtrátaZachyceníUkazatele | Nastane, když zachycení ukazatele je převzato jiným prvkem. |
| PointerWheelChanged | Nastane, když se změní hodnota kolečka myši a když je touchpad sevřen. |
| PointerRoutedEventArgs | Poskytuje data pro všechny události ukazatele. |
Následující příklad ukazuje, jak použít události PointerPressed, PointerReleaseda PointerExited pro zpracování interakce klepnutím na objekt Obdélníku.
Nejprve se v jazyce XAML (Extensible Application Markup Language) vytvoří obdélník s názvem touchRectangle .
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Rectangle Name="touchRectangle"
Height="100" Width="200" Fill="Blue" />
</Grid>
Dále jsou určeni posluchače pro události PointerPressed, PointerReleaseda PointerExited.
MainPage::MainPage()
{
InitializeComponent();
// Pointer event listeners.
touchRectangle->PointerPressed += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerPressed);
touchRectangle->PointerReleased += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerReleased);
touchRectangle->PointerExited += ref new PointerEventHandler(this, &MainPage::touchRectangle_PointerExited);
}
public MainPage()
{
this.InitializeComponent();
// Pointer event listeners.
touchRectangle.PointerPressed += touchRectangle_PointerPressed;
touchRectangle.PointerReleased += touchRectangle_PointerReleased;
touchRectangle.PointerExited += touchRectangle_PointerExited;
}
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Pointer event listeners.
AddHandler touchRectangle.PointerPressed, AddressOf touchRectangle_PointerPressed
AddHandler touchRectangle.PointerReleased, AddressOf Me.touchRectangle_PointerReleased
AddHandler touchRectangle.PointerExited, AddressOf touchRectangle_PointerExited
End Sub
Nakonec obslužná rutina události
// Handler for pointer exited event.
void MainPage::touchRectangle_PointerExited(Object^ sender, PointerRoutedEventArgs^ e)
{
Rectangle^ rect = (Rectangle^)sender;
// Pointer moved outside Rectangle hit test area.
// Reset the dimensions of the Rectangle.
if (nullptr != rect)
{
rect->Width = 200;
rect->Height = 100;
}
}
// Handler for pointer released event.
void MainPage::touchRectangle_PointerReleased(Object^ sender, PointerRoutedEventArgs^ e)
{
Rectangle^ rect = (Rectangle^)sender;
// Reset the dimensions of the Rectangle.
if (nullptr != rect)
{
rect->Width = 200;
rect->Height = 100;
}
}
// Handler for pointer pressed event.
void MainPage::touchRectangle_PointerPressed(Object^ sender, PointerRoutedEventArgs^ e)
{
Rectangle^ rect = (Rectangle^)sender;
// Change the dimensions of the Rectangle.
if (nullptr != rect)
{
rect->Width = 250;
rect->Height = 150;
}
}
// Handler for pointer exited event.
private void touchRectangle_PointerExited(object sender, PointerRoutedEventArgs e)
{
Rectangle rect = sender as Rectangle;
// Pointer moved outside Rectangle hit test area.
// Reset the dimensions of the Rectangle.
if (null != rect)
{
rect.Width = 200;
rect.Height = 100;
}
}
// Handler for pointer released event.
private void touchRectangle_PointerReleased(object sender, PointerRoutedEventArgs e)
{
Rectangle rect = sender as Rectangle;
// Reset the dimensions of the Rectangle.
if (null != rect)
{
rect.Width = 200;
rect.Height = 100;
}
}
// Handler for pointer pressed event.
private void touchRectangle_PointerPressed(object sender, PointerRoutedEventArgs e)
{
Rectangle rect = sender as Rectangle;
// Change the dimensions of the Rectangle.
if (null != rect)
{
rect.Width = 250;
rect.Height = 150;
}
}
' Handler for pointer exited event.
Private Sub touchRectangle_PointerExited(sender As Object, e As PointerRoutedEventArgs)
Dim rect As Rectangle = CType(sender, Rectangle)
' Pointer moved outside Rectangle hit test area.
' Reset the dimensions of the Rectangle.
If (rect IsNot Nothing) Then
rect.Width = 200
rect.Height = 100
End If
End Sub
' Handler for pointer released event.
Private Sub touchRectangle_PointerReleased(sender As Object, e As PointerRoutedEventArgs)
Dim rect As Rectangle = CType(sender, Rectangle)
' Reset the dimensions of the Rectangle.
If (rect IsNot Nothing) Then
rect.Width = 200
rect.Height = 100
End If
End Sub
' Handler for pointer pressed event.
Private Sub touchRectangle_PointerPressed(sender As Object, e As PointerRoutedEventArgs)
Dim rect As Rectangle = CType(sender, Rectangle)
' Change the dimensions of the Rectangle.
If (rect IsNot Nothing) Then
rect.Width = 250
rect.Height = 150
End If
End Sub
Události manipulace
Události manipulace v aplikaci použijte, pokud potřebujete podporovat více interakcí prstem nebo interakcí, které vyžadují rychlost dat.
Události manipulace můžete použít k detekci interakcí, jako je přetažení, přiblížení a podržení.
Poznámka:
Touchpad nevyvolá události manipulace. Místo toho budou události ukazování vyvolány při použití touchpadu.
Tady je seznam událostí manipulace a souvisejících argumentů událostí.
| Událost nebo kurs | Description |
|---|---|
| Zahájení manipulace událost | Nastane při prvním vytvoření procesoru pro manipulaci. |
| událost ManipulationStarted | Nastane, když vstupní zařízení zahájí manipulaci s UIElement. |
| události |
Nastane, když vstupní zařízení změní pozici během manipulace. |
| ManipulationInertiaStarting události | Nastane, když vstupní zařízení ztratí kontakt s objektem UIElement během manipulace a začne setrvačnost. |
| události ManipulationCompleted | Nastane, když je manipulace a inertnost na UIElement dokončena. |
| ManipulationStartingRoutedEventArgs | Poskytuje data pro událost ManipulationStarting. |
| ManipulationStartedRoutedEventArgs | Poskytuje data pro událost ManipulationStarted. |
| ManipulationDeltaRoutedEventArgs | Poskytuje data pro událost ManipulatDelta . |
| ManipulationInertiaStartingRoutedEventArgs | Poskytuje data pro událost ManipulationInertiaStarting. |
| ManipulaceVelocities | Popisuje rychlost, při které dochází k manipulaci. |
| ManipulationCompletedRoutedEventArgs | Poskytuje data pro událost ManipulationCompleted. |
Gesto se skládá z řady událostí manipulace. Každé gesto začíná událostí ManipulationStarted, například když se uživatel dotkne obrazovky.
V dalším kroku se aktivuje jedna nebo více událostí ManipulationDelta. Pokud se například dotknete obrazovky a potom potáhnete prstem přes obrazovku. Nakonec je událost ManipulationCompleted vyvolána, když interakce skončí.
Poznámka:
Pokud nemáte monitor dotykové obrazovky, můžete kód události manipulace otestovat v simulátoru pomocí rozhraní myši a kolečka myši.
Následující příklad ukazuje, jak pomocí událostí ManipulationDelta zpracovat posuvní interakci na obdélníku a přesunout jej po obrazovce.
Nejprve se v XAML vytvoří obdélníktouchRectangle s výškou a šířkou 200.
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Rectangle Name="touchRectangle"
Width="200" Height="200" Fill="Blue"
ManipulationMode="All"/>
</Grid>
Dále se vytvoří globální TranslateTransform s názvem dragTranslation pro překlad Obdélník. Na Obdélníku je specifikován naslouchací proces události ManipulationDelta a dragTranslation je přidán do RenderTransformobdélníku.
// Global translation transform used for changing the position of
// the Rectangle based on input data from the touch contact.
Windows::UI::Xaml::Media::TranslateTransform^ dragTranslation;
// Global translation transform used for changing the position of
// the Rectangle based on input data from the touch contact.
private TranslateTransform dragTranslation;
' Global translation transform used for changing the position of
' the Rectangle based on input data from the touch contact.
Private dragTranslation As TranslateTransform
MainPage::MainPage()
{
InitializeComponent();
// Listener for the ManipulationDelta event.
touchRectangle->ManipulationDelta +=
ref new ManipulationDeltaEventHandler(
this,
&MainPage::touchRectangle_ManipulationDelta);
// New translation transform populated in
// the ManipulationDelta handler.
dragTranslation = ref new TranslateTransform();
// Apply the translation to the Rectangle.
touchRectangle->RenderTransform = dragTranslation;
}
public MainPage()
{
this.InitializeComponent();
// Listener for the ManipulationDelta event.
touchRectangle.ManipulationDelta += touchRectangle_ManipulationDelta;
// New translation transform populated in
// the ManipulationDelta handler.
dragTranslation = new TranslateTransform();
// Apply the translation to the Rectangle.
touchRectangle.RenderTransform = this.dragTranslation;
}
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Listener for the ManipulationDelta event.
AddHandler touchRectangle.ManipulationDelta,
AddressOf testRectangle_ManipulationDelta
' New translation transform populated in
' the ManipulationDelta handler.
dragTranslation = New TranslateTransform()
' Apply the translation to the Rectangle.
touchRectangle.RenderTransform = dragTranslation
End Sub
Nakonec se v obslužné rutině události ManipulationDelta aktualizuje pozice obdélníku pomocí TranslateTransform na vlastnosti Delta.
// Handler for the ManipulationDelta event.
// ManipulationDelta data is loaded into the
// translation transform and applied to the Rectangle.
void MainPage::touchRectangle_ManipulationDelta(Object^ sender,
ManipulationDeltaRoutedEventArgs^ e)
{
// Move the rectangle.
dragTranslation->X += e->Delta.Translation.X;
dragTranslation->Y += e->Delta.Translation.Y;
}
// Handler for the ManipulationDelta event.
// ManipulationDelta data is loaded into the
// translation transform and applied to the Rectangle.
void touchRectangle_ManipulationDelta(object sender,
ManipulationDeltaRoutedEventArgs e)
{
// Move the rectangle.
dragTranslation.X += e.Delta.Translation.X;
dragTranslation.Y += e.Delta.Translation.Y;
}
' Handler for the ManipulationDelta event.
' ManipulationDelta data Is loaded into the
' translation transform And applied to the Rectangle.
Private Sub testRectangle_ManipulationDelta(
sender As Object,
e As ManipulationDeltaRoutedEventArgs)
' Move the rectangle.
dragTranslation.X = (dragTranslation.X + e.Delta.Translation.X)
dragTranslation.Y = (dragTranslation.Y + e.Delta.Translation.Y)
End Sub
Směrované události
Zde jsou všechny události ukazatele, gest a manipulace implementovány jako směrované události. To znamená, že událost může být potenciálně zpracována jinými objekty než objekty, které původně vyvolaly událost. Následující nadřazení v objektovém stromě, jako jsou nadřazené kontejnery UIElement nebo kořenová stránka Page ve vaší aplikaci, se mohou rozhodnout tyto události zpracovat, i když původní prvek tyto události nevykonává. Naopak jakýkoli objekt, který zpracovává událost, může označit událost zpracovávanou tak, aby již nedosahoval žádného nadřazeného prvku. Další informace o konceptu směrované události a o tom, jak ovlivňuje způsob zápisu obslužných rutin pro směrované události, najdete v tématu Přehled událostí a směrovaných událostí.
Důležité
Pokud potřebujete zpracovat události ukazatele pro UIElement v posuvném zobrazení (například ScrollViewer nebo ListView), musíte explicitně zakázat podporu událostí manipulace s elementem v zobrazení voláním UIElement.CancelDirectmanipulation(). Pokud chcete v zobrazení znovu povolit události manipulace, zavolejte UIElement.TryStartDirectManipulation().
Co dělat a co nedělat
- Návrh aplikací s dotykovou interakcí jako primární očekávaná metoda zadávání
- Poskytnutí vizuální zpětné vazby pro interakce všech typů (dotykové ovládání, pero, myš atd.)
- Optimalizujte cílení úpravou velikosti dotykového cíle, geometrie kontaktu, procházením a kýváním.
- Optimalizujte přesnost použitím bodů přichycení a směrových "kolejnic".
- Poskytněte popisky a úchyty, které vám pomůžou zlepšit přesnost dotykového ovládání pro úzce zabalené položky uživatelského rozhraní.
- Nepoužívejte časované interakce, kdykoli je to možné (příklad vhodného použití: dotykové ovládání a podržení).
- Nepoužívejte počet prstů, které se používají k rozlišení manipulace, kdykoli je to možné.
Související články
Samples
- Ukázka základního vstupu
- Vstupní vzorek s nízkou latencí
- Ukázka režimu interakce uživatele
- Ukázka vizuálů Focus
Archivní ukázky
Windows developer