Partilhar via


Dimensionando a imagem da área de trabalho

Este tópico se aplica somente ao Windows 7 e posterior e ao Windows Server 2008 R2 e versões posteriores do sistema operacional Windows.

Como o dimensionamento funciona

Um chamador pode usar a função SetDisplayConfig Connecting and Configuring Displays (CCD) para dimensionar a imagem da área de trabalho para o monitor:

  • Se a área de trabalho e o monitor usarem a mesma resolução, SetDisplayConfig não será necessário para dimensionar a imagem da área de trabalho para o monitor. Essa operação SetDisplayConfig é conhecida como dimensionamento de identidade.

  • Se a resolução da área de trabalho e do monitor for diferente, SetDisplayConfig aplicará um dos seguintes tipos de dimensionamento. A resolução do monitor é definida pela estrutura DISPLAYCONFIG_TARGET_MODE .

    • Dimensionamento centralizado

      O dimensionamento centralizado é um modo no qual a área de trabalho é exibida no monitor sem nenhum dimensionamento. Quando SetDisplayConfig aplica o dimensionamento centralizado, as faixas pretas podem estar visíveis acima e abaixo da área de trabalho. A figura a seguir mostra o dimensionamento centralizado.

      Diagrama mostrando o dimensionamento centralizado com faixas pretas acima e abaixo da área de trabalho.

    • Dimensionamento estendido

      O dimensionamento estendido é um modo no qual a área de trabalho é ampliada horizontal e verticalmente no monitor para garantir que toda a exibição seja usada. Quando SetDisplayConfig aplica dimensionamento estendido, nenhuma faixa preta fica visível acima e abaixo da área de trabalho. No entanto, a área de trabalho pode parecer distorcida. A figura a seguir mostra o dimensionamento estendido.

      Diagrama mostrando o dimensionamento estendido com a área de trabalho preenchendo toda a exibição.

    • Aspect-Ratio-Preserveing Stretched

      O dimensionamento estendido de preservação da taxa de proporção é um modo no qual a área de trabalho é ampliada horizontal e verticalmente o máximo possível, mantendo a taxa de proporção. Quando SetDisplayConfig aplica o dimensionamento estendido de preservação da taxa de proporção, as faixas pretas podem estar visíveis acima e abaixo ou à esquerda e à direita da área de trabalho. No entanto, as faixas pretas não podem ser visíveis acima e abaixo e à esquerda e à direita da área de trabalho. Como os usuários devem preferir esse tipo de dimensionamento, SetDisplayConfig aplica esse tipo de dimensionamento como o padrão. A figura a seguir mostra a taxa de proporção preservando o dimensionamento estendido.

      Diagrama mostrando o dimensionamento estendido de preservação da taxa de proporção com faixas pretas em ambos os lados ou acima e abaixo da área de trabalho.

O dimensionamento depende dos modos de origem e destino usados para um caminho. Além disso, o chamador pode chamar SetDisplayConfig sem especificar as informações do modo de destino (ou seja, definir o parâmetro modeInfoArray é opcional e pode ser definido como NULL). Isso significa que o chamador normalmente não pode prever se SetDisplayConfig deve executar qualquer dimensionamento. Além disso, não existe nenhuma API para obter a lista completa de tipos de dimensionamento aos quais o adaptador gráfico dá suporte. A função Win32 EnumDisplaySettings retorna DMDFO_DEFAULT no membro dmDisplayFixedOutput da estrutura DEVMODE para a qual o parâmetro lpDevMode aponta quando o chamador solicita os tipos de dimensionamento do Windows 7.

O dimensionamento que um chamador passa para SetDisplayConfig é uma intenção de dimensionamento em vez de uma solicitação explícita para executar uma operação de dimensionamento. Se o dimensionamento for necessário (por exemplo, as resoluções de origem e destino diferem), SetDisplayConfig usará o dimensionamento fornecido pelo chamador. Se não houver suporte para o dimensionamento fornecido, SetDisplayConfig usará o dimensionamento padrão do adaptador gráfico. Quando as resoluções de origem e destino que o chamador passa para SetDisplayConfig são as mesmas, SetDisplayConfig sempre define o dimensionamento de identidade.

Solicitações de Escala

A tabela a seguir mostra as diferentes solicitações de dimensionamento SetDisplayConfig e identifica a nomenclatura abreviada usada nas tabelas encontradas nas subseções abaixo. Consulte DISPLAYCONFIG_SCALING para obter definições dos valores DISPLAYCONFIG_SCALING_XXX .

Solicitação de dimensionamento Nomenclatura abreviada usada nas tabelas abaixo
DISPLAYCONFIG_SCALING_IDENTITY DC_IDENTITY
DISPLAYCONFIG_SCALING_CENTERED DC_CENTERED
DISPLAYCONFIG_SCALING_STRETCHED DC_STRETCHED
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX DC_ASPECTRATIOCENTEREDMAX
DISPLAYCONFIG_SCALING_CUSTOM DC_CUSTOM
DISPLAYCONFIG_SCALING_PREFERRED DC_PREFERRED
O valor de dimensionamento padrão do adaptador. Atualmente, em tablets, o padrão é estendido. Em sistemas que não são tablets com adaptadores gráficos que dão suporte ao WDDM ( Modelo de Driver de Vídeo do Windows ), o padrão é definido pelo driver. Em sistemas não tablets com adaptadores gráficos que dão suporte ao WDDM com recursos novos para Windows 7, o padrão é DC_ASPECTRATIOCENTEREDMAX. AdapterDefault
O valor de dimensionamento do banco de dados para os monitores conectados atuais DatabaseValue

SetDisplayConfig solicitações de dimensionamento

A tabela a seguir mostra os valores que são salvos no banco de dados e os valores que são realmente definidos, em que:

  • "Set (same)" e "Store (same)" são os valores definidos e armazenados quando o modo de origem resultante e o modo de destino têm a mesma resolução
  • "Definir (diferente)" e "Armazenar (diferente)" são os valores definidos e armazenados quando o modo de origem resultante e o modo de destino têm resoluções diferentes
Sinalizador de dimensionamento passado para SetDisplayConfig Definir (mesmo) Armazenar (mesmo) Definir (diferente) Definir (diferente)
DC_IDENTITY configuração atual não está no BD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_IDENTITY configuração atual no BD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DC_CENTERED DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DC_STRETCHED DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DC_ASPECTRATIOCENTEREDMAX no WDDM com o driver de recursos do Windows 7 DC_IDENTITY DC_ASPRATIOMAX DC_ASPRATIOMAX DC_ASPRATIOMAX
DC_ASPECTRATIOCENTEREDMAX no driver WDDM DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM no WDDM com o driver de recursos do Windows 7 que dá suporte ao dimensionamento personalizado no caminho DC_CUSTOM DC_CUSTOM DC_CUSTOM DC_CUSTOM
DC_CUSTOM no WDDM com o driver de recursos do Windows 7 que não dá suporte ao dimensionamento personalizado no caminho DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_CUSTOM no driver WDDM DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED configuração atual não está no BD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DC_PREFERRED configuração atual no BD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Solicitações de dimensionamento ChangeDisplaySettingsEx herdadas

A tabela a seguir mostra como o dimensionamento que um chamador pode passar para a API ChangeDisplaySettingsEx herdada é mapeada para o conjunto de dimensionamento, em que:

  • "Set (same)" e "Store (same)" são os valores definidos e armazenados quando o modo de origem resultante e o modo de destino têm a mesma resolução
  • "Definir (diferente)" e "Armazenar (diferente)" são os valores definidos e armazenados quando o modo de origem resultante e o modo de destino têm resoluções diferentes
Sinalizador de dimensionamento passado para ChangeDisplaySettingsEx Definir (mesmo) Armazenar (mesmo) Definir (diferente) Definir (diferente)
DMDFO_DEFAULT com a configuração atual não no banco de dados CCD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DMDFO_DEFAULT com a configuração atual no banco de dados CCD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue
DMDFO_STRETCH DC_IDENTITY DC_STRETCHED DC_STRETCHED DC_STRETCHED
DMDFO_CENTER DC_IDENTITY DC_CENTERED DC_CENTERED DC_CENTERED
DM_DISPLAYFIXEDOUTPUT não definido, a configuração atual não está no banco de dados CCD DC_IDENTITY AdapterDefault AdapterDefault AdapterDefault
DM_DISPLAYFIXEDOUTPUT não definido, configuração atual no banco de dados CCD DC_IDENTITY DatabaseValue DatabaseValue DatabaseValue

Tradução de dimensionamento de EnumDisplaySettings herdada

A tabela a seguir mostra como o dimensionamento de configuração de exibição é traduzido e retornado de EnumDisplaySettings.

Dimensionamento ativo atual Valores de dimensionamento de GDI retornados de EnumDisplaySettings herdados(ENUM_CURRENT_SETTINGS)
DC_IDENTITY DMDFO_DEFAULT
DC_CENTERED DMDFO_CENTER
DC_STRETCHED DMDFO_STRETCH
DC_ASPRATIOMAX DMDFO_DEFAULT
DC_CUSTOM DMDFO_DEFAULT
DC_PREFERRED DMDFO_DEFAULT

Jogos e dimensionamento do DirectX

O Microsoft DirectX 9L e os runtimes anteriores exigem que os aplicativos sempre chamem a função ChangeDisplaySettingsEx sem DM_DISPLAYFIXEDOUTPUT definido no membro dmFields da estrutura DEVMODE para a qual o parâmetro lpDevMode aponta. O DirectX 10 e os runtimes posteriores permitem que os aplicativos escolham o dimensionamento que esses aplicativos passam para ChangeDisplaySettingsEx. A tabela a seguir mostra o mapeamento de valores de dimensionamento para sinalizadores de dimensionamento que são passados para ChangeDisplaySettingsEx.

Valor de dimensionamento da cadeia de inversão DXGI Sinalizadores de dimensionamento que são passados para ChangeDisplaySettingsEx
DXGI_MODE_SCALING_UNSPECIFIED DMDFO_DEFAULT, DMDFO_CENTER ou DMDFO_STRETCH. O dimensionamento que os aplicativos usam depende de vários fatores, que incluem o dimensionamento da área de trabalho atual e a lista de modos que o driver expõe.
DXGI_MODE_SCALING_CENTERED DMDFO_CENTER
DXGI_MODE_SCALING_STRETCHED DMDFO_STRETCH

Usando essas informações em combinação com as tabelas de dimensionamento anteriores, você pode determinar o dimensionamento esperado de um aplicativo DirectX.