当SwapChainBackgroundPanel被SwapChainPanel取代时,Windows Metro应用程序UI在高分辨率设备中混乱

时间:2015-04-15 11:57:07

标签: winrt-xaml windows-8.1 direct3d11

我正在开发winRt metro应用程序。我在UI中使用SwapChainBackgroundPanel来显示视频内容。  我最近用SwapChainPanel取代了它,因为微软推荐它。 但现在UI已经超越了屏幕。 如果我在调整交换链缓冲区的大小时不将转换转换为像素,则UI看起来很好。 我在Surface pro 3和其他高分辨率设备中看到了这个问题

1 个答案:

答案 0 :(得分:0)

SwapChainPanel开始,您必须考虑属性CompositionScaleXCompositionScaleY。 在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)
);