这个答案有两个部分 - 请不要评判。新的我很不确定,但会给你更好的结果。较旧的我肯定会以某种方式工作。
新答案
我认为您在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;
现在您可以在应用程序中尽可能多地重用代码。这对我有用。