DXGI_SCALING 枚举 (dxgi1_2.h)

标识当后台缓冲区大小与目标输出大小不匹配时调整大小的行为。

语法

typedef enum DXGI_SCALING {
  DXGI_SCALING_STRETCH = 0,
  DXGI_SCALING_NONE = 1,
  DXGI_SCALING_ASPECT_RATIO_STRETCH = 2
} ;

常量

 
DXGI_SCALING_STRETCH
值: 0
指示 DXGI 使后台缓冲区内容缩放以适应演示目标大小。 这是调用 IDXGIFactory::CreateSwapChain 方法时 DXGI 的隐式行为。
DXGI_SCALING_NONE
值:1
当呈现目标大小不等于后台缓冲区大小时,指示 DXGI 使后台缓冲区内容不进行任何缩放显示。 后台缓冲区和表示目标的上边缘对齐在一起。 如果WS_EX_LAYOUTRTL样式与目标输出窗口的 HWND 句柄相关联,则后台缓冲区和表示目标的右边缘对齐在一起;否则,左边缘对齐在一起。 后台缓冲区外的所有目标区域都用窗口背景色填充。

此值指定交换链后台缓冲区之外的所有目标区域都用你在调用 IDXGISwapChain1::SetBackgroundColor 中指定的背景色填充。
DXGI_SCALING_ASPECT_RATIO_STRETCH
值: 2
指示 DXGI 使后台缓冲区内容缩放以适应呈现目标大小,同时保留后台缓冲区的纵横比。 如果缩放的后退缓冲区未填充演示区域,它将以黑色边框居中。

Windows Phone 8 和 Windows 10 支持此常量。

请注意,使用旧版 Win32 窗口交换链时,其工作原理与 DXGI_SCALING_STRETCH 相同。

注解

只有使用 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 或 DXGI_SWAP_EFFECT_FLIP_DISCARD 值创建的翻转演示文稿模型交换链才支持DXGI_SCALING_NONE值。 在调用 IDXGIFactory2::CreateSwapChainForHwndIDXGIFactory2::CreateSwapChainForCoreWindowIDXGIFactory2::CreateSwapChainForComposition 时传递这些值。

DXGI_SCALING_ASPECT_RATIO_STRETCH首选使用水平填充,否则将使用以下逻辑使用垂直填充。

float aspectRatio = backBufferWidth / float(backBufferHeight);

 // Horizontal fill
 float scaledWidth = outputWidth;
 float scaledHeight = outputWidth / aspectRatio;
 if (scaledHeight >= outputHeight)
 {
   // Do vertical fill
   scaledWidth = outputHeight * aspectRatio;
   scaledHeight = outputHeight;
 }

 float offsetX = (outputWidth - scaledWidth) * 0.5f;
 float offsetY = (outputHeight - scaledHeight) * 0.5f;

 rect.left = static_cast<LONG>(offsetX);
 rect.top = static_cast<LONG>(offsetY);
 rect.right = static_cast<LONG>(offsetX + scaledWidth);
 rect.bottom = static_cast<LONG>(offsetY + scaledHeight);

 rect.left = std::max<LONG>(0, rect.left);
 rect.top = std::max<LONG>(0, rect.top);
 rect.right = std::min<LONG>(static_cast<LONG>(outputWidth), rect.right);
 rect.bottom = std::min<LONG>(static_cast<LONG>(outputHeight), rect.bottom);

请注意, outputWidthoutputHeight 是呈现目标大小的像素大小。 对于 CoreWindow,这需要使用窗口的 DPI 属性将 logicalWidthlogicalHeight 值从 DIPS 转换为像素。

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用]
标头 dxgi1_2.h

另请参阅

DXGI 枚举

DXGI_SWAP_CHAIN_DESC1