Пользовательский интерфейс приложения метро Windows портится в устройствах с высоким разрешением, когда SwapChainBackgroundPanel заменяется SwapChainPanel
Я занимаюсь разработкой приложения WinRt Metro. Я использовал SwapChainBackgroundPanel в пользовательском интерфейсе для отображения видео контента. Я недавно заменил его на SwapChainPanel, потому что Microsoft рекомендует его. Но теперь пользовательский интерфейс растянут за пределы экрана. Если я не преобразую провалы в пиксели при изменении размера буферов swapchain, пользовательский интерфейс выглядит нормально. Я вижу эту проблему в Surface Pro 3 и других устройствах с высоким разрешением
1 ответ
Начиная с 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)
);