【问题标题】:Find Current monitor's Size (Height and Width)查找当前显示器的尺寸(高度和宽度)
【发布时间】:2012-10-22 11:20:40
【问题描述】:

我正在使用双显示器,我想找到当前(我的应用程序处于活动状态)显示器的高度和宽度(注意:不是分辨率)。我怎样才能做到这一点。我的 WPF 应用程序根据当前屏幕尺寸显示屏幕尺寸选项。

【问题讨论】:

  • stackoverflow.com/questions/6363752/… 不知道我的期望。
  • 如果你的应用跨越两个屏幕,你会怎么做?
  • @相信我 - 我是一名医生,这仅告诉如何找到分辨率,而不是显示器尺寸
  • @Joey,该要求可能会在稍后介绍,但此标准是我们的主要关注点。

标签: c# .net wpf


【解决方案1】:

如果您喜欢冒险,请查看注册表项。特别是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY 并循环显示(或者更好地只是活动显示)并使用EDID 信息来获取屏幕的宽度和高度(根据毕达哥拉斯定理,对角线长度)监控

【讨论】:

    【解决方案2】:

    这个答案有两个部分 - 请不要评判。新的我很不确定,但会给你更好的结果。较旧的我肯定会以某种方式工作。

    新答案

    我认为您在one of the questions you viewed 中错过了一个非常重要的答案。通过将Graphics.DpiX 和Graphics.DpiY 分别除以像素分辨率的 x 和 y 值,可以得到答案。正确阅读here!也不要忘记通读 cmets。

    因为在不同的显示器上一英寸的像素数量不同,所以这个家伙发现Graphics.DpiX 是制作一英寸所需的 X 轴上的像素数量。 Graphics.DpiY 也是如此,它显然将每英寸的像素指向 y 轴。为了从分辨率中找到英寸,您将这两者相除。您可以阅读更多关于 here 和 here 的用法。第二个链接在 Visual Basic 中,但假设您有以前的 C# 知识,您将能够弄清楚语法。

    请注意 - 我还没有尝试以下任何方法!

    首先引用System.Drawing。

    接下来,理论上(我之前没有尝试过,如果可以请纠正我)你需要创建一个新的 Graphics 类。

    Graphics DesktopGraphics = Graphics.FromHdc(GetDC(IntPtr.Zero));

    现在,使用引用相关显示器的新 Graphics 类,我们获取 DPI 和屏幕分辨率,然后将屏幕分辨率除以 DPI,得到屏幕的英寸数。

    SystemInformation.PrimaryMonitorSize.Width / Graphics.DpiX 表示宽度,SystemInformation.PrimaryMonitorSize.Height / Graphics.DpiY 表示高度。您需要将这两个分配给它们各自的变量,瞧!屏幕的宽度和高度 - 以英寸为单位。

    如果我做错了什么,请告诉我。我仍然是一个新手程序员,所以如果我做错了什么,请不要抨击我或抨击我——如果我这样做了,你能建议适当的代码吗?


    旧答案

    写信的人; 尝试System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height 它在我的情况下工作。 实际上,它告诉你高度,以像素为单位。您需要做的是将此整数转换为英寸。

    一英寸等于 96 像素(或者更准确地说是 96.0000000000011)。所以,写下面的代码;

        //Height
        Int MonitorHeightinInches = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height / 96;
        //Width
        Int MonitorWidthinInches = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width / 96;
    

    现在您可以在应用程序中尽可能多地重用代码。这对我有用。

    【讨论】:

      【解决方案3】:

      您会发现很难获得显示器的物理尺寸。您可能能够获得分辨率和 DPI 并从那里计算出来,但这并不一定会给您正确的答案。想象一台投影仪——您可能知道它的分辨率和 DPI,但显示图像的物理尺寸将取决于到屏幕的距离。不过,这不仅仅是投影仪。例如,每台显示器的制造过程可能会导致数字略有偏差。

      我很想删除对物理尺寸的任何引用,并根据您的显示器的分辨率和 DPI 功能进行适当调整大小的流畅布局。

      【讨论】:

      • 我刚刚在 Windows Store 应用程序中尝试了这个,结果如预期的那样是错误的。我的 900 像素高的显示器以 96 dpi 的分辨率报告自己,理论上它的高度为 9.375 英寸。事实上,它实际上是 7.5 英寸左右。
      【解决方案4】:

      试试

             System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height
      

      它在我的情况下工作。

      【讨论】:

      • 不,这仅提供分辨率,我正在寻找以英寸为单位的显示器高度和重量。
      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多