在不影响返回的情况下获得系统分辨率

时间:2014-02-19 15:19:54

标签: c# .net

目前编写的函数将返回系统的当前分辨率但有困难。我是桌面分辨率(它是一个图像下载器,所以我将以一定的分辨率搜索图像)。

目前我尝试了两种不同的方式,我的第一次尝试如下:

private Size GetMonitorResolution()
{
    Size temp = Screen.PrimaryScreen.Bounds;
    return temp;
}

此功能仅在DPI未缩放时才有效,例如我有一台运行速度为1920x1080的15“笔记本电脑,但是我将文本缩放到125%,因为如果不这样做,它会太小而无法读取。函数在这台笔记本电脑上输出1536x864的分辨率。我也尝试过像SystemInformation.PrimaryMonitorSize这样的类似调用,但这也会返回1536x864,这是不正确的。

我的第二次尝试是通过谷歌搜索问题找到的材料的混合物,但它仍然返回1536x864。该功能看起来像这样:

private Size GetMonitorResolution()
{
    using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
    {
        return new Size((Screen.PrimaryScreen.Bounds.Width * (int)graphics.DpiX) / 96
          , (Screen.PrimaryScreen.Bounds.Height * (int)graphics.DpiY) / 96);
    }
}

0 个答案:

没有答案