c# 获取系统dpi
c# 获取系统dpi
正在搜索: c# 获取系统dpi
正在为你生成答案…
您可以使用以下代码获取当前屏幕的DPI:
Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(mainWindow).Handle); double dpixRatio = currentGraphics.DpiX / 96;
其中,mainWindow是您的窗口对象。
如果是在命令行程序中获取呢,命令行程序中不存在mainWindow
如果是在命令行程序中获取,您可以使用以下代码:
Graphics currentGraphics = Graphics.FromHwnd(IntPtr.Zero); double dpixRatio = currentGraphics.DpiX / 96;
其中,IntPtr.Zero表示当前屏幕的句柄。
根据我的测试,在不同程序中此方法将返回不同的值,如何永远返回系统的dpi呢?
如果您想要获取系统的DPI,可以使用以下代码:
[DllImport("gdi32.dll")] static extern int GetDeviceCaps(IntPtr hdc, int nIndex); [DllImport("user32.dll")] static extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll")] static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); const int LOGPIXELSX = 88; const int LOGPIXELSY = 90; IntPtr hdc = GetDC(IntPtr.Zero); int dpiX = GetDeviceCaps(hdc, LOGPIXELSX); int dpiY = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(IntPtr.Zero, hdc); double dpixRatio = dpiX / 96.0;
其中,LOGPIXELSX和LOGPIXELSY是常量,分别代表水平和垂直方向的DPI。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步