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.
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.
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.
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.