Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O dimensionamento automático permite que um formulário e seus controles, projetados em uma máquina com uma determinada resolução de exibição ou fonte, sejam exibidos adequadamente em outra máquina com uma resolução de exibição ou fonte diferente. Ele garante que o formulário e seus controles serão redimensionados de forma inteligente para serem consistentes com janelas nativas e outros aplicativos nas máquinas dos usuários e de outros desenvolvedores. O dimensionamento automático e os estilos visuais permitem que os aplicativos do Windows Forms mantenham uma aparência consistente quando comparados aos aplicativos nativos do Windows na máquina de cada usuário.
Na maioria das vezes, o dimensionamento automático funciona como esperado no Windows Forms. No entanto, as alterações no esquema de fontes podem ser problemáticas. Para obter um exemplo de como resolver isso, consulte Como responder a alterações no esquema de fontes em um aplicativo do Windows Forms.
Necessidade de dimensionamento automático
Sem dimensionamento automático, um aplicativo projetado para uma resolução de exibição ou fonte aparecerá muito pequeno ou muito grande quando essa resolução ou fonte for alterada. Por exemplo, se o aplicativo é projetado usando Tahoma 9 ponto como uma linha de base, sem ajuste ele aparecerá muito pequeno se executado em uma máquina onde a fonte do sistema é Tahoma 12 ponto. Os elementos de texto, como títulos, menus, conteúdo da caixa de texto e assim por diante, serão renderizados mais pequenos do que outras aplicações. Além disso, o tamanho dos elementos da interface do usuário (UI) que contêm texto, como a barra de título, menus e muitos controles dependem da fonte usada. Neste exemplo, esses elementos também aparecerão relativamente menores.
Uma situação análoga ocorre quando um aplicativo é projetado para uma determinada resolução de exibição. A resolução de ecrã mais comum é de 96 pontos por polegada (DPI), o que equivale a 100% de escalonamento de ecrã, mas os ecrãs de maior resolução que suportam 125%, 150%, 200% (que equivalem, respetivamente, a 120, 144 e 192 DPI) e superiores estão a tornar-se mais comuns. Sem ajuste, um aplicativo, especialmente um baseado em gráficos, projetado para uma resolução aparecerá muito grande ou muito pequeno quando executado em outra resolução.
O dimensionamento automático procura resolver esses problemas redimensionando automaticamente o formulário e seus controles filhos de acordo com o tamanho relativo da fonte ou a resolução de exibição. O sistema operacional Windows oferece suporte ao dimensionamento automático de caixas de diálogo usando uma unidade de medida relativa chamada unidades de diálogo. Uma unidade de diálogo é baseada na fonte do sistema e sua relação com pixels pode ser determinada através da função GetDialogBaseUnitsWin32 SDK . Quando um usuário altera o tema usado pelo Windows, todas as caixas de diálogo são ajustadas automaticamente de acordo. Além disso, o Windows Forms oferece suporte ao dimensionamento automático de acordo com a fonte padrão do sistema ou a resolução de exibição. Opcionalmente, o dimensionamento automático pode ser desativado em um aplicativo.
Atenção
Não há suporte para misturas arbitrárias de DPI e modos de dimensionamento de fontes. Embora você possa dimensionar um controle de usuário usando um modo (por exemplo, DPI) e colocá-lo em um formulário usando outro modo (Fonte) sem problemas, mas misturar um formulário base em um modo e um formulário derivado em outro pode levar a resultados inesperados.
Dimensionamento automático em ação
O Windows Forms usa a seguinte lógica para dimensionar automaticamente formulários e seu conteúdo:
Em tempo de design, cada ContainerControl registra o modo de dimensionamento e a sua resolução atual no AutoScaleMode e no AutoScaleDimensions, respectivamente.
Em tempo de execução, a resolução real é armazenada na propriedade CurrentAutoScaleDimensions. A propriedade AutoScaleFactor calcula dinamicamente a proporção entre a resolução de dimensionamento em tempo de execução e em tempo de projeto.
Quando o formulário é carregado, se os valores de CurrentAutoScaleDimensions e AutoScaleDimensions forem diferentes, então o método PerformAutoScale é chamado para redimensionar o controle e os seus componentes. Esse método suspende o layout e chama o método Scale para executar o dimensionamento real. Posteriormente, o valor do AutoScaleDimensions é atualizado para evitar o escalonamento progressivo.
PerformAutoScale também é invocado automaticamente nas seguintes situações:
Em resposta ao evento OnFontChanged se o modo de dimensionamento for Font.
Quando o layout do controle de contêiner é retomado e uma alteração é detetada nas propriedades AutoScaleDimensions ou AutoScaleMode.
Como implícito acima, quando um pai ContainerControl está a ser dimensionado. Cada controle de contêiner é responsável por dimensionar seus filhos usando seus próprios fatores de dimensionamento e não o de seu contêiner pai.
Os controles filho podem modificar seu comportamento de dimensionamento por vários meios:
A propriedade ScaleChildren pode ser substituída para determinar se seus controles filhos devem ser dimensionados ou não.
O método GetScaledBounds pode ser substituído para ajustar os limites para os quais o controle é dimensionado, mas não a lógica de dimensionamento.
O método ScaleControl pode ser substituído para alterar a lógica de dimensionamento para o controle atual.
Ver também
.NET Desktop feedback