获取屏幕大小第三篇 物理大小GetDeviceCaps 下
2016-01-16 12:41
423 查看
原文地址:/article/1392161.html
本篇文章(MoreWindows)将获取屏幕的物理大小后计算屏幕对角线长度并换算成英寸。这样可以方便大家查看自己电脑屏幕是多少英寸的。为了更方便大家使用,本文将提供电脑屏幕大小查看器下载(配源码)下载地址是(欢迎大家试用):http://download.csdn.net/detail/morewindows/5106270
通常大家在表示电脑、电视、手机等电子产品的屏幕大小时会使用英寸这一长度单位来描述。要注意的一点时,英寸在描述电脑、电视、手机等电子产品的屏幕大小时是指屏幕的对角线长度。
英寸(inch,缩写为in.)在荷兰语中的本意是大拇指,一英寸就是一节大拇指的长度。当然人的大拇指的长度也是长短不一的。14世纪时,英皇爱德华二世颁布了“标准合法英寸”。其规定为:从大麦穗中间选择三粒最大的麦粒并依次排成一行的长度就是一英寸。
英寸与毫米的换算关系为:
1英寸 = 25.4毫米
1毫米 =0.03937英寸
/article/1392161.html
根据这一换算公式,可以改写下《VC++获取屏幕大小第二篇物理大小GetDeviceCaps
上》中的代码,让其直接计算出屏幕是多少英寸的。改写后的代码如下:
呵呵,本人笔记本的屏幕大小是13.64英寸即商家所称的14英寸笔记本。
根据这份代码可以发布个小程序,供其它人用来查看电脑屏幕大小。可惜由于GetDeviceCaps函数的限制,在Win7系统下该程序检测结果不准确,WinXP系统下基本上可以正确运行。
电脑屏幕大小查看器的下载地址为(附源码):http://download.csdn.net/detail/morewindows/5106270
附上Himetric尺寸与像素尺寸的转换关系,以IPicture加载图片为例,IPicture::get_Width和IPicture::get_Height获取是Himetric尺寸,要转换成像素尺寸,代码如下:
本篇文章(MoreWindows)将获取屏幕的物理大小后计算屏幕对角线长度并换算成英寸。这样可以方便大家查看自己电脑屏幕是多少英寸的。为了更方便大家使用,本文将提供电脑屏幕大小查看器下载(配源码)下载地址是(欢迎大家试用):http://download.csdn.net/detail/morewindows/5106270
通常大家在表示电脑、电视、手机等电子产品的屏幕大小时会使用英寸这一长度单位来描述。要注意的一点时,英寸在描述电脑、电视、手机等电子产品的屏幕大小时是指屏幕的对角线长度。
英寸(inch,缩写为in.)在荷兰语中的本意是大拇指,一英寸就是一节大拇指的长度。当然人的大拇指的长度也是长短不一的。14世纪时,英皇爱德华二世颁布了“标准合法英寸”。其规定为:从大麦穗中间选择三粒最大的麦粒并依次排成一行的长度就是一英寸。
英寸与毫米的换算关系为:
1英寸 = 25.4毫米
1毫米 =0.03937英寸
/article/1392161.html
根据这一换算公式,可以改写下《VC++获取屏幕大小第二篇物理大小GetDeviceCaps
上》中的代码,让其直接计算出屏幕是多少英寸的。改写后的代码如下:
// 获取屏幕大小 物理大小 #include <stdio.h> #include <conio.h> #include <math.h> #include <windows.h> int main() { printf(" 获取屏幕大小 物理大小\n"); printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); int nScreenWidth, nScreenHeight; HDC hdcScreen = GetDC(NULL); //获取屏幕的HDC nScreenWidth = GetDeviceCaps(hdcScreen, HORZSIZE); nScreenHeight = GetDeviceCaps(hdcScreen, VERTSIZE); printf("屏幕大小(毫米) 宽:%d 高:%d\n", nScreenWidth, nScreenHeight); printf(" 下面将屏幕大小由毫米换算到英寸\n"); const double MILLIMETRE_TO_INCH = 0.03937; double fDiagonalLen = sqrt(nScreenHeight * nScreenHeight + nScreenWidth * nScreenWidth); printf("屏幕对角线长为:%.2lf毫米 约 %.2lf英寸\n", fDiagonalLen, fDiagonalLen * MILLIMETRE_TO_INCH); getch(); return 0; }运行结果如下:
呵呵,本人笔记本的屏幕大小是13.64英寸即商家所称的14英寸笔记本。
根据这份代码可以发布个小程序,供其它人用来查看电脑屏幕大小。可惜由于GetDeviceCaps函数的限制,在Win7系统下该程序检测结果不准确,WinXP系统下基本上可以正确运行。
电脑屏幕大小查看器的下载地址为(附源码):http://download.csdn.net/detail/morewindows/5106270
附上Himetric尺寸与像素尺寸的转换关系,以IPicture加载图片为例,IPicture::get_Width和IPicture::get_Height获取是Himetric尺寸,要转换成像素尺寸,代码如下:
...... // 前面的代码省略 // don't delete memory on object's release if (CreateStreamOnHGlobal(hGlobal,FALSE,&pStream) != S_OK) return FALSE; if (OleLoadPicture(pStream,dwSize,FALSE,IID_IPicture, reinterpret_cast<LPVOID *>(&m_pPicture)) != S_OK) { pStream->Release(); return FALSE; }; pStream->Release(); // store picture's size // 下面获取的长度为himetric长度,1himetric = 0.01mm long hmWidth; long hmHeight; m_pPicture->get_Width(&hmWidth); m_pPicture->get_Height(&hmHeight); // 需要将himetric长度转换成pixel长度,1英寸 = 25.4mm // GetDeviceCaps(LOGPIXELSX)获取的是每英寸的像素点个数 // 英寸长度 = (himetric长度 / 100)(mm,毫米)/25.4 = himetric长度 / 2540 // 像素长度 = 英寸长度 * 每英寸的像素点个数 HDC hDC = ::GetDC(m_hWnd); m_PictureSize.cx = MulDiv(hmWidth, GetDeviceCaps(hDC,LOGPIXELSX), 2540); m_PictureSize.cy = MulDiv(hmHeight, GetDeviceCaps(hDC,LOGPIXELSY), 2540); ::ReleaseDC(m_hWnd,hDC);
相关文章推荐
- 计算机视觉的一个较大的数据集索引
- Leetcode 74. Search a 2D Matrix
- JVM学习笔记(八)--- 分代垃圾回收详述2
- linux操作系统,tomcat如何开启JMX
- [前端][node]linux环境下nodejs的安装
- shell脚本----for循环-转 Syntax error: Bad for loop variable
- Linux系统管理(二):Linux系统启动流程
- linux下vi或vim编辑文件时提示Found a swap file by the name的原因及解决方法
- 基于Proxy代理服务器的长连接方法
- 在shell中使用echo命令输出带颜色的文本-转
- svn命令
- 有关RAVE报表 - 大富翁论坛20050419
- linux/unix上 printf输出带颜色字体(有意思)-转
- Android中把bitmap存成BMP格式图片的方法
- Ubuntu 12.04下关闭图形界面知识整理-转
- 虚拟机linux上路由器启动问题分析
- 留有后门的IRC源程序,谁看得懂就有黑客潜质
- 图片的拉伸、翻转、不变形,图片转颜色,本地加载
- 留有后门的IRC源程序,谁看得懂就有黑客潜质
- 【转】iOS开发之压缩与解压文件