ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

WinForm C# 获取屏幕真实分辨率

2022-01-01 15:02:06  阅读:297  来源: 互联网

标签:GetDeviceCaps IntPtr C# iPtr 分辨率 获取 Size WinForm


       在上一篇文章(Winform C#截屏实现_学习记录专栏-CSDN博客)中,获取屏幕分辨率采取了折中的方法。然而在笔记本连接外接显示器,并且显示器显示模式扩展的情况下,获取到的屏幕分辨率就有会包含扩展屏,与目标机器的分辨率不符合。

网上继续搜索,才发现微软早提供了API获取的方法。

导入GetDeviceCaps方法如下:

        [DllImport("gdi32.dll", EntryPoint = "GetDeviceCaps", SetLastError = true)]
        public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

获取方法如下:

        public Size get_size_of_screen()
        {
            Size s = new Size();
            var g = Graphics.FromHwnd(IntPtr.Zero);
            IntPtr iPtr = g.GetHdc();
            s.Width = GetDeviceCaps(iPtr, 118);
            s.Height = GetDeviceCaps(iPtr, 117);
            return s;
        }

其实API后面的第二个参数可以获取到更多信息,有兴趣的朋友可以自行搜索。

标签:GetDeviceCaps,IntPtr,C#,iPtr,分辨率,获取,Size,WinForm
来源: https://blog.csdn.net/fandongguang0702/article/details/122267525

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有