查找当前显示器的尺寸(高度和宽度)

时间:2012-10-22 11:20:41

标签: c# .net wpf

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

4 个答案:

答案 0 :(得分:2)

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

新答案

我认为你在one of the questions you viewed中错过了一个非常重要的答案。使用Graphics.DpiXGraphics.DpiY得到的答案是将它们分别划分为像素分辨率的x和y值。请仔细阅读here!不要忘记阅读评论。

因为不同显示器中的英寸像素数量不同,所以这个家伙发现Graphics.DpiX是制作一英寸所需的X轴像素数量。同样适用于Graphics.DpiY,它明显指出y轴上每英寸的像素数。为了找到分辨率的英寸,你可以将这两个分开。您可以详细了解使用情况herehere。第二个链接是在Visual Basic中,但想象你有以前的C#知识,你能够找出语法。

警告 - 我还没有尝试过以下任何一项!

首先引用System.Drawing

接下来,从理论上讲(我还没试过这个,所以如果可以,请纠正我)你需要创建一个新的Graphics类。

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

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

宽度为{p> 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;

现在,您可以在应用程序中根据需要重复使用代码。这对我有用。

答案 1 :(得分:1)

您会发现很难获得显示器的物理尺寸。你或许可以从中获得分辨率和DPI并将其解决,但这并不一定能给你正确的答案。想象一下投影机 - 您可能知道它的分辨率和DPI,但显示图像的物理尺寸将取决于到屏幕的距离。不过,它不仅仅是投影仪。例如,每个监视器的制造过程可能导致略微偏离数字。

我很想删除对物理尺寸的任何引用,并根据显示器的分辨率和DPI功能制作一个可以充分调整大小的流动布局。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

尝试

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

它适用于我的情况。