屏幕分辨率显示在4K上的问题

时间:2016-03-18 16:24:35

标签: c# resolution screen-resolution

当我试图通过我的4K分辨率获得实际分辨率时:

Screen.PrimaryScreen.Bounds.Width

或者:

System.Windows.SystemParameters.PrimaryScreenWidth

它将显示分辨率2560x1440。这很奇怪 几次显示正确的分辨率3840x2160。但我不知道它是如何可能的。

1 个答案:

答案 0 :(得分:0)

问题是因为Windows尝试呈现没有任何dpi管理的应用程序。所以Windows假装它正在另一个分辨率上运行应用程序。 如果您使用主要版本大于6.0的Windows操作系统,则可以使用以下功能:

private enum ProcessDPIAwareness
{
        ProcessDPIUnaware = 0,
        ProcessSystemDPIAware = 1,
        ProcessPerMonitorDPIAware = 2
}

    [DllImport("shcore.dll")]
    private static extern int SetProcessDpiAwareness(ProcessDPIAwareness value);



    private static void SetDpiAwareness()
        {
           if (Environment.OSVersion.Version.Major >= 6)
                 {
                       SetProcessDpiAwareness(ProcessDPIAwareness.ProcessPerMonitorDPIAware);
                 }
         }