DXGI_SCALING列舉 (dxgi1_2.h)
識別當後端緩衝區大小不符合目標輸出的大小時,調整大小行為。
Syntax
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::CreateSwapChainForHwnd、IDXGIFactory2::CreateSwapChainForCoreWindow 或 IDXGIFactory2::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);
請注意, outputWidth 和 outputHeight 是簡報目標大小的圖元大小。 在 CoreWindow 的情況下,這需要使用視窗的 DPI 屬性,將 logicalWidth 和 logicalHeight 值從 DIPS 轉換為圖元。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 的 Windows Server 2012 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
標頭 | dxgi1_2.h |