Renderizando controles com estilos visuais

O .NET Framework fornece suporte para controles de renderização e outros elementos da interface do usuário (UI) do Windows usando estilos visuais em sistemas operacionais que oferecem suporte a eles. Este tópico discute os vários níveis de suporte no .NET Framework para controles de renderização e outros elementos da interface do usuário com o estilo visual atual do sistema operacional.

Classes de renderização para controles comuns

Renderizar um controle refere-se a desenhar a interface do usuário de um controle. O System.Windows.Forms namespace fornece a ControlPaint classe para renderizar alguns controles comuns do Windows Forms. No entanto, essa classe desenha controles no estilo clássico do Windows, o que pode dificultar a manutenção de uma experiência de interface do usuário consistente ao desenhar controles personalizados em aplicativos com os estilos visuais habilitados.

O .NET Framework 2.0 inclui classes no System.Windows.Forms namespace que renderizam as partes e estados de controles comuns com estilos visuais. Cada uma dessas classes inclui métodos static para desenhar o controle ou partes do controle em um estado específico com o estilo visual atual do sistema operacional.

Algumas dessas classes foram projetadas para desenhar o controle relacionado independentemente de estilos visuais estarem disponíveis. Se os estilos visuais estiverem habilitados, os membros da classe desenharão o controle relacionado com estilos visuais. Se os estilos visuais estiverem desabilitados, os membros da classe desenharão o controle no estilo clássico do Windows. Essas classes incluem:

Outras classes só podem desenhar o controle relacionado quando os estilos visuais estiverem disponíveis e seus membros lançarão uma exceção se os estilos visuais estiverem desabilitados. Essas classes incluem:

Para obter mais informações sobre como usar essas classes para desenhar um controle, consulte Como usar uma classe de renderização do controle.

Elemento de estilo visual e classes de renderização

O System.Windows.Forms.VisualStyles namespace inclui classes que podem ser usadas para desenhar e obter informações sobre qualquer controle ou elemento de interface do usuário que é suportado por estilos visuais. Os controles com suporte incluem controles comuns que têm uma classe de renderização no namespace (consulte a System.Windows.Forms seção anterior), bem como outros controles, como controles de guia e controles de vergalhão. Outros elementos de interface do usuário com suporte incluem as partes do menu Iniciar, a barra de tarefas e a área não cliente do Windows.

As classes principais do System.Windows.Forms.VisualStyles namespace são VisualStyleElement e VisualStyleRenderer. VisualStyleElement é uma classe básica para identificar qualquer elemento de controle ou interface do usuário suportado por estilos visuais. Além de si mesmo, o System.Windows.Forms.VisualStyles namespace inclui muitas classes aninhadas de com static propriedades que retornam um para cada estado de um VisualStyleElement controle, parte de controle ou outro elemento de VisualStyleElementVisualStyleElement interface do usuário suportado por estilos visuais.

VisualStyleRenderer Fornece os métodos que desenham e obtêm informações sobre cada um VisualStyleElement definido pelo estilo visual atual do sistema operacional. Informações que podem ser recuperadas sobre um elemento incluem seu tamanho padrão, o tipo de tela de fundo e definições de cores. VisualStyleRenderer encapsula a funcionalidade da API de estilos visuais (UxTheme) da parte do Shell do Windows do SDK da Plataforma Windows. Para obter mais informações, consulte Habilitando estilos visuais.

Para obter mais informações sobre como usar VisualStyleRenderer e , consulte Como: Renderizar um elementoVisualStyleElement de estilo visual.

Habilitar estilos visuais

Para habilitar estilos visuais para um aplicativo escrito para o .NET Framework versão 1.0, os programadores devem incluir um manifesto de aplicativo que especifica que ComCtl32.dll versão 6 ou posterior será usado para desenhar controles. Aplicativos criados com o .NET Framework versão 1.1 ou posterior podem usar o Application.EnableVisualStylesApplication método da classe.

Verificando se há suporte para estilos visuais

A RenderWithVisualStyles propriedade da Application classe indica se o aplicativo atual está desenhando controles com estilos visuais. Ao pintar um controle personalizado, você pode verificar o valor de RenderWithVisualStyles para determinar se você deve renderizar seu controle com ou sem estilos visuais. A tabela a seguir lista as quatro condições que devem existir para RenderWithVisualStyles retornar true.

Condição Observações
O sistema operacional dá suporte a estilos visuais. Para verificar essa condição separadamente, use a IsSupportedByOSVisualStyleInformation propriedade da classe.
O usuário habilitou estilos visuais no sistema operacional. Para verificar essa condição separadamente, use a IsEnabledByUserVisualStyleInformation propriedade da classe.
Os estilos visuais estão habilitados no aplicativo. Os estilos visuais podem ser habilitados em um aplicativo chamando o método ou usando um manifesto Application.EnableVisualStyles de aplicativo que especifica que ComCtl32.dll versão 6 ou posterior será usado para desenhar controles.
Os estilos visuais estão sendo usados para desenhar a área de cliente das janelas de aplicativos. Para verificar essa condição separadamente, use a VisualStyleStateApplication propriedade da classe e verifique se ela tem o valor VisualStyleState.ClientAreaEnabled ou VisualStyleState.ClientAndNonClientAreasEnabled.

Para determinar quando um usuário habilita ou desabilita estilos visuais ou alterna de um estilo visual para outro, verifique o UserPreferenceCategory.VisualStyle valor nos manipuladores para os SystemEvents.UserPreferenceChanging eventos ou SystemEvents.UserPreferenceChanged .

Importante

Se você quiser usar VisualStyleRenderer para renderizar um controle ou elemento de interface do usuário quando o usuário habilitar ou alternar estilos visuais, certifique-se de fazer isso ao manipular o UserPreferenceChanged evento em vez do UserPreferenceChanging evento. Uma exceção será lançada se você usar a VisualStyleRenderer classe ao manipular UserPreferenceChangingo .

Confira também