SetDisplayConfig 缩放请求
下表显示了保存在数据库中的值和实际设置的值,其中:
- 当生成的源模式和目标模式具有相同的分辨率时,"设置 (相同的) "和"存储 (相同的) "是设置和存储值
- 当生成的源模式和目标模式具有不同的分辨率时,"设置 (不同的) "和"存储 (不同的) "是设置和存储值
| 传递给 SetDisplayConfig 的缩放标志 | 设置 (相同的) | 存储 (相同的) | 设置 (不同的) | 设置 (不同的) |
|---|---|---|---|---|
| DC_IDENTITY当前配置不在 Db 中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| DC_IDENTITY Db 中的当前配置 | 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 |
| 使用 Windows 7 功能驱动程序在 WDDM 上DC_ASPECTRATIOCENTEREDMAX | DC_IDENTITY | DC_ASPRATIOMAX | DC_ASPRATIOMAX | DC_ASPRATIOMAX |
| WDDM 驱动程序上的DC_ASPECTRATIOCENTEREDMAX | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| 使用 Windows 7 功能驱动程序在 WDDM 上DC_CUSTOM,该驱动程序支持路径上的自定义缩放 | DC_CUSTOM | DC_CUSTOM | DC_CUSTOM | DC_CUSTOM |
| 在 WDDM 上使用不支持路径上的自定义缩放的 Windows 7 功能驱动程序上的DC_CUSTOM | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| WDDM 驱动程序上的DC_CUSTOM | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| DC_PREFERRED当前配置不在 Db 中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| DC_PREFERRED Db 中的当前配置 | DC_IDENTITY | DatabaseValue | DatabaseValue | DatabaseValue |
旧版 ChangeDisplaySettingsEx 缩放请求
下表显示了调用方可以传递给旧 版 ChangeDisplaySettingsEx API 的缩放如何映射到缩放集,其中:
- 当生成的源模式和目标模式具有相同分辨率时,"设置 (相同的) "和"存储 (相同的) "是设置和存储值
- 当生成的源模式和目标模式具有不同的分辨率时,"设置 (不同的) "和"存储 (不同的) "是设置和存储值
| 传递给 ChangeDisplaySettingsEx 的缩放标志 | 设置 (相同的) | 存储 (相同的) | 设置 (不同的) | 设置 (不同的) |
|---|---|---|---|---|
| 当前配置不在 CCD 数据库中的DMDFO_DEFAULT | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| CCD 数据库中具有当前配置的DMDFO_DEFAULT | 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未设置,当前配置不在 CCD 数据库中 | DC_IDENTITY | AdapterDefault | AdapterDefault | AdapterDefault |
| DM_DISPLAYFIXEDOUTPUT未设置 CCD 数据库中的当前配置 | DC_IDENTITY | DatabaseValue | DatabaseValue | DatabaseValue |
旧版 EnumDisplaySettings 缩放转换
下表显示了如何转换和从 EnumDisplaySettings 返回显示配置缩放。
| 当前活动缩放 | 从旧版 EnumDisplaySettings 返回的 GDI 缩放值 (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 |
DirectX 游戏和缩放
Microsoft DirectX 9L 及更早版本的运行时要求应用程序始终调用 ChangeDisplaySettingsEx 函数,而不DM_DISPLAYFIXEDOUTPUT在 lpDevMode 参数指向的 DEVMODE 结构的 dmFields 成员中设置。 DirectX 10 及更高版本的运行时允许应用程序选择这些应用程序传递给 ChangeDisplaySettingsEx 的 缩放。 下表显示了缩放值到传递给 ChangeDisplaySettingsEx 的缩放标志的映射。
| DXGI 翻转链缩放值 | 传递给 ChangeDisplaySettingsEx 的缩放标志 |
|---|---|
| DXGI_MODE_SCALING_UNSPECIFIED | DMDFO_DEFAULT、DMDFO_CENTER或DMDFO_STRETCH。 应用程序使用的缩放取决于多个因素,其中包括当前桌面缩放和驱动程序公开的模式列表。 |
| DXGI_MODE_SCALING_CENTERED | DMDFO_CENTER |
| DXGI_MODE_SCALING_STRETCHED | DMDFO_STRETCH |
通过将此信息与前面的缩放表结合使用,可以确定 DirectX 应用程序的预期缩放。