获得物理屏幕(显示)分辨率。 Windows应用商店应用

时间:2015-10-20 10:32:11

标签: windows-runtime windows-8.1 windows-10

我需要当前的显示分辨率。我怎么能得到这个?我知道Window.Current.Bounds,但应用程序可以在Windows模式下工作。

1 个答案:

答案 0 :(得分:0)

你是什么意思VisibleBounds不能在Deskptop上工作? 我尝试了我的win10 UWP程序,它运行正常。我可以像下面那样得到我的桌面版本:

  var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
  var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
  var size = new Size(bounds.Width * scaleFactor, bounds.Height * scaleFactor);

此外,如果您在商店应用中使用DX,则可以创建IDXGIFactory对象并使用它来枚举可用的适配器。然后调用IDXGIOutput :: GetDisplayModeList以检索DXGI_MODE_DESC结构的数组以及数组中的元素数。每个DXGI_MODE_DESC结构代表输出的有效显示模式。 e.g:

   UINT numModes = 0;
   DXGI_MODE_DESC* displayModes = NULL;
   DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT;

    // Get the number of elements
    hr = pOutput->GetDisplayModeList( format, 0, &numModes, NULL);

    displayModes = new DXGI_MODE_DESC[numModes]; 

    // Get the list
    hr = pOutput->GetDisplayModeList( format, 0, &numModes, displayModes);

如果您需要更多信息,请与我们联系。