我正在开发winRt metro应用程序。我在UI中使用SwapChainBackgroundPanel来显示视频内容。 我最近用SwapChainPanel取代了它,因为微软推荐它。 但现在UI已经超越了屏幕。 如果我在调整交换链缓冲区的大小时不将转换转换为像素,则UI看起来很好。 我在Surface pro 3和其他高分辨率设备中看到了这个问题
答案 0 :(得分:0)
从SwapChainPanel
开始,您必须考虑属性CompositionScaleX
和CompositionScaleY
。
在m_swapChain->GetBuffer()
之前,插入以下代码:
// Setup inverse scale on the swap chain
DXGI_MATRIX_3X2_F inverseScale = { 0 };
inverseScale._11 = 1.0f / m_swapChainPanel->CompositionScaleX;
inverseScale._22 = 1.0f / m_swapChainPanel->CompositionScaleY;
ComPtr<IDXGISwapChain2> spSwapChain2;
DX::ThrowIfFailed(
m_swapChain.As<IDXGISwapChain2>(&spSwapChain2)
);
DX::ThrowIfFailed(
spSwapChain2->SetMatrixTransform(&inverseScale)
);