如何检索我的C#Winform应用程序运行的屏幕分辨率?如何从C#winform应用程序检索屏幕分辨率?
回答
您是否需要标准应用程序所使用的区域,即排除Windows任务栏和停靠窗口?如果是这样,请使用Screen.WorkingArea property。否则,请使用Screen.Bounds。
如果有多个显示器,则需要从形式抓取屏幕,即
Form myForm;
Screen myScreen = Screen.FromControl(myForm);
Rectangle area = myScreen.WorkingArea;
如果你想知道哪个是主显示屏幕,使用Screen.Primary属性。此外,您可以从Screen.AllScreens属性中获取屏幕列表。
使用Screen类,并询问Bounds属性。 Screen类有一个静态属性Primary Screen,另一个静态属性返回a list of all the screens attached to the system。
+1链接到Screen.AllScreens。对于Screen.WorkingArea,为 – ToolmakerSteve 2013-10-10 17:51:25
Screen.PrimaryScreen.WorkingArea.Size()
给出的答案是正确的,就它而言。但是,如果将文本大小设置为超过125%,Windows(和.NET)会开始扫描屏幕大小以便自动缩放。
大多数情况下,这不是问题 - 您通常希望Windows和.NET来执行此操作。但是,如果真的需要知道屏幕上像素的实际数量(例如,要直接绘制到桌面DC),则可以执行以下操作。我只在Win10上试过这个。 YMMV在其他Windows版本上。
到目前为止,如果您不想全局关闭应用程序中的DPI感知功能,那么这是获得真正屏幕像素数的唯一方法。请注意,此示例获取主显示屏大小 - 您需要修改此屏幕以获取其他屏幕。
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
IntPtr primary = GetDC(IntPtr.Zero);
int DESKTOPVERTRES = 117;
int DESKTOPHORZRES = 118;
int actualPixelsX = GetDeviceCaps(primary, DESKTOPHORZRES);
int actualPixelsY = GetDeviceCaps(primary, DESKTOPVERTRES);
ReleaseDC(IntPtr.Zero, primary);
- 1. c#winform屏幕分辨率
- 2. 屏幕分辨率检测
- 3. 检测屏幕分辨率
- 4. Windows 8应用程序中的屏幕分辨率检测
- 5. C++的屏幕分辨率
- 6. 适应屏幕分辨率
- 7. 屏幕分辨率(C#Win 8.1应用程序)
- 8. 如何迁移iPhone 5屏幕分辨率的应用程序?
- 9. Winform显示屏分辨率
- 10. 屏幕分辨率
- 11. 屏幕分辨率
- 12. 屏幕分辨率
- 13. 屏幕分辨率
- 14. 屏幕分辨率
- 15. 屏幕分辨率
- 16. 如何使用c#windows应用程序设置windows屏幕分辨率
- 17. 在iPhone应用程序中如何检测设备的屏幕分辨率
- 18. iPhone模拟器屏幕分辨率vs iPhone屏幕分辨率
- 19. Android应用屏幕分辨率问题
- 20. 如何使.net winform应用程序分辨率友好
- 21. WinForm分辨率
- 22. 如何阅读屏幕分辨率 - 并更改此分辨率?
- 23. 检测客户端屏幕分辨率
- 24. 检查多个屏幕分辨率
- 25. 应用程序洞察 - 无屏幕分辨率信息
- 26. 问题根据屏幕分辨率过滤android应用程序
- 27. WPF作物应用程序窗口到屏幕分辨率
- 28. Silverlight应用程序屏幕分辨率问题
- 29. 应用程序支持所有的i-Phone屏幕分辨率?
- 30. Google Cast Receiver应用程序屏幕分辨率
+1。我错误地使用了Screen.Bounds。如果可以的话,我会给你+2,提及Screen.FromControl而不是Screen.PrimaryScreen! – ToolmakerSteve 2013-10-10 17:44:51