Sdílet prostřednictvím


Vykreslování ovládacích prvků pomocí vizuálních stylů

Rozhraní .NET Framework poskytuje podporu vykreslování ovládacích prvků a dalších prvků uživatelského rozhraní systému Windows pomocí vizuálních stylů v operačních systémech, které je podporují. Toto téma popisuje několik úrovní podpory v rozhraní .NET Framework pro vykreslování ovládacích prvků a dalších prvků uživatelského rozhraní s aktuálním vizuálním stylem operačního systému.

Třídy vykreslování pro běžné ovládací prvky

Vykreslení ovládacího prvku odkazuje na vykreslení uživatelského rozhraní ovládacího prvku. Obor názvů System.Windows.Forms poskytuje třídu ControlPaint pro vykreslení některých běžných ovládacích prvků Windows Forms. Tato třída však nakreslí ovládací prvky v klasickém stylu Windows, což může ztížit zachování konzistentního uživatelského rozhraní při kreslení vlastních ovládacích prvků v aplikacích s povolenými vizuálními styly.

Rozhraní .NET Framework 2.0 obsahuje třídy v oboru názvů System.Windows.Forms, které vykreslují části a stavy běžných ovládacích prvků pomocí vizuálních stylů. Každá z těchto tříd zahrnuje static metody pro kreslení ovládacího prvku nebo částí ovládacího prvku v určitém stavu s aktuálním vizuálním stylem operačního systému.

Některé z těchto tříd jsou navrženy tak, aby související ovládací prvek byl vykreslen bez ohledu na to, zda jsou dostupné vizuální styly. Pokud jsou styly vizuálů povolené, členové třídy nakreslejí související ovládací prvek pomocí vizuálních stylů; Pokud jsou vizuální styly zakázané, členové třídy nakreslejí ovládací prvek v klasickém stylu Windows. Mezi tyto třídy patří:

Ostatní třídy mohou kreslit související ovládací prvek pouze v případě, že jsou dostupné vizuální styly, a jejich členové vyvolají výjimku, pokud jsou vizuální styly zakázány. Mezi tyto třídy patří:

Další informace o použití těchto tříd k kreslení ovládacího prvku naleznete v tématu Postupy: Použití třídy vykreslování ovládacích prvků.

Element vizuálního stylu a třídy vykreslování

System.Windows.Forms.VisualStyles obor názvů zahrnuje třídy, které lze použít k kreslení a získání informací o jakémkoli ovládacím prvku nebo prvku uživatelského rozhraní, které jsou podporovány vizuálními styly. Mezi podporované ovládací prvky patří běžné ovládací prvky, které mají třídu vykreslování v oboru názvů System.Windows.Forms (viz předchozí část), a také další ovládací prvky, jako jsou ovládací prvky karet a ovládací prvky rebaru. Mezi další podporované prvky uživatelského rozhraní patří části nabídky Start, hlavního panelu a neklientských oblastí oken.

Hlavní třídy oboru názvů System.Windows.Forms.VisualStyles jsou VisualStyleElement a VisualStyleRenderer. VisualStyleElement je základní třída pro identifikaci jakéhokoli prvku ovládacího prvku nebo prvku uživatelského rozhraní podporovaného vizuálními styly. Kromě samotného VisualStyleElement zahrnuje obor názvů System.Windows.Forms.VisualStyles mnoho vnořených tříd VisualStyleElement s vlastnostmi static, které vracejí VisualStyleElement pro každý stav ovládacího prvku, části ovládacího prvku nebo jiného prvku uživatelského rozhraní, podporovaného vizuálními styly.

VisualStyleRenderer poskytuje metody, které vykreslují a získávají informace o jednotlivých VisualStyleElement definovaných aktuálním vizuálním stylem operačního systému. Informace, které lze načíst o prvku, zahrnují výchozí velikost, typ pozadí a definice barev. VisualStyleRenderer zabaluje funkce API vizuálních stylů (UxTheme) z části Windows Shell sady Windows Platform SDK. Další informace naleznete v tématu Povolení vizuálních stylů.

Další informace o použití VisualStyleRenderer a VisualStyleElementnaleznete v tématu Postupy: Vykreslení elementu vizuálního stylu.

Povolení vizuálních stylů

Chcete-li povolit vizuální styly pro aplikaci napsanou pro rozhraní .NET Framework verze 1.0, musí programátoři zahrnout manifest aplikace, který určuje, že ComCtl32.dll verze 6 nebo novější budou použity k kreslení ovládacích prvků. Aplikace vytvořené pomocí rozhraní .NET Framework verze 1.1 nebo novější mohou používat Application.EnableVisualStyles metodu Application třídy.

Kontrola podpory vizuálních stylů

Vlastnost RenderWithVisualStyles třídy Application určuje, zda aktuální aplikace vykresluje ovládací prvky pomocí vizuálních stylů. Při malování vlastního ovládacího prvku můžete zkontrolovat hodnotu RenderWithVisualStyles a určit, jestli chcete ovládací prvek vykreslit pomocí vizuálních stylů nebo bez. Následující tabulka uvádí čtyři podmínky, které musí existovat pro RenderWithVisualStyles, aby vrátil true.

Podmínka Poznámky
Operační systém podporuje vizuální styly. Chcete-li ověřit tuto podmínku samostatně, použijte vlastnost IsSupportedByOS třídy VisualStyleInformation.
Uživatel povolil vizuální styly v operačním systému. Chcete-li ověřit tuto podmínku samostatně, použijte vlastnost IsEnabledByUser třídy VisualStyleInformation.
Styly vizuálů jsou v aplikaci povolené. Vizuální styly lze v aplikaci povolit voláním metody Application.EnableVisualStyles nebo pomocí manifestu aplikace, který určuje, že ComCtl32.dll verze 6 nebo novější se použijí k kreslení ovládacích prvků.
Styly vizuálů se používají k vykreslení klientské oblasti oken aplikací. Chcete-li ověřit tuto podmínku samostatně, použijte vlastnost VisualStyleState třídy Application a ověřte, zda má hodnotu VisualStyleState.ClientAreaEnabled nebo VisualStyleState.ClientAndNonClientAreasEnabled.

Pokud chcete určit, kdy uživatel povolí nebo zakáže vizuální styly, nebo přepne z jednoho vizuálního stylu na jiný, zkontrolujte, zda hodnota UserPreferenceCategory.VisualStyle je v obsluhách událostí SystemEvents.UserPreferenceChanging nebo SystemEvents.UserPreferenceChanged.

Důležitý

Pokud chcete použít VisualStyleRenderer k vykreslení ovládacího prvku nebo prvku uživatelského rozhraní, když uživatel povolí nebo přepne vizuální styly, ujistěte se, že to uděláte při zpracování události UserPreferenceChanged místo události UserPreferenceChanging. Pokud použijete třídu VisualStyleRenderer při zpracování UserPreferenceChanging, dojde k vyvolání výjimky.

Viz také