Пользовательский интерфейс приложения метро 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)
);
Другие вопросы по тегам