【转载】VC GDI 像素转厘米(英寸)
【转载】http://blog.sina.com.cn/s/blog_638dd78201018663.html
函数原型:int GetDeviceCaps(int nIndex);
常用的参数有(参考MSDN):
int iHORZSIZE=pDC->GetDeviceCaps(HORZSIZE); // 得到当前显示设备的水平大小(毫米)
int iVERTSIZE=pDC->GetDeviceCaps(VERTSIZE);// 得到当前显示设备的垂直大小(毫米)
int iHORZRES=pDC->GetDeviceCaps(HORZRES);// 得到当前显示设备的水平像素数
int iVERTRES=pDC->GetDeviceCaps(VERTRES);// 得到当前显示设备的垂直像素数
int iLOGPIXELSX=pDC->GetDeviceCaps(LOGPIXELSX);// 得到当前显示设备的水平单位英寸像素数
int iLOGPIXELSY=pDC->GetDeviceCaps(LOGPIXELSY);// 得到当前显示设备的垂直单位英寸像素数
int iPHYSICALWIDTH=pDC->GetDeviceCaps(PHYSICALWIDTH);// 得到当前打印设备的水平大小(毫米)
int iPHYSICALHEIGHT=pDC->GetDeviceCaps(PHYSICALHEIGHT);// 得到当前打印设备的水平大小(毫米)
验证结果:
1.对于打印设备来说完全正确,可以利用上述参数在打印时得到与实际尺寸一致的结果。
2.对于打印设备来说上面的三组参数存在运算关系
iHORZSIZE=iHORZRES*25.4/iLOGPIXELSX;
iVERTSIZE=iVERTRES*25.4/iLOGPIXELSY;
3.对于显示设备来说,LOGPIXELSX和LOGPIXELSY得到的结果和Windows设置的字体有关,100%时为96dpi,150%时为144dpi。
4.至少对我目前的笔记本显示器来说,上述函数调用得到结果只有iHORZRES和iVERTRES是准确的,LOGPIXELSX和LOGPIXELSY为96(我设置的是正常字体),而iHORZSIZE和iVERTSIZE似乎是用72dpi计算出来的:
iHORZSIZE=iHORZRES*25.4/72;
iVERTSIZE=iVERTRES*25.4/72;
不知这个72dpi从何而来
5.对我的笔记本显示器,经验证,改变分辨率和windows字体大小时,3和4的结论都正确,72dpi不变
6.PHYSICALWIDTH和PHYSICALHEIGHT这组参数,只对打印设备有效,得到是当前打印机纸张的全部像素数,而iHORZRES和iVERTRES得到的都是可打印范围的像素数,对显示设备这组参数返回值为0
7.Google结果显示可用读注册表中显示器的EDID信息得到显示器的物理尺寸,比较复杂,研究中
【转载】VC GDI 像素转厘米(英寸)的更多相关文章
- VC GDI 像素转厘米(英寸)[转发]
[转载]http://blog.sina.com.cn/s/blog_638dd78201018663.html 函数原型:int GetDeviceCaps(int nIndex); 常用的参数有( ...
- 转载 VC 2010下安装OpenCV2.4.4
说明: 1.安装平台:32位XP,VS2010: 2.OpenCV 2.4.4不支持VC 6.0: 3.网上有很多用CMake编译OpenCV的安装教程,这里建议先不要自己编译,如果使用预编译好的库有 ...
- 【转载】GDI 映像方式 之 SetViewportExtEx 与 SetWindowExtEx 解析
所谓视口代表设备,比如屏幕. 窗口代表我们的思维. 我们对windows说在(5,6)处画个点(调用GDI函数).windows认为是在我们的思维的(5,6)处画了个点.(也就是说5,6是逻辑坐标,G ...
- 【转载】gdi+ 内存泄漏
[转载]http://issf.blog.163.com/blog/static/1941290822009111894413472/ 最近用GDI+实现了几个自定义控件,但是发现存在内存泄露问题 B ...
- (转载)解决GDI闪烁
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...
- 【转载】GDI 映像方式 之 SetViewportOrgEx 与 SetWindowOrgEx 解析
SetViewportOrgEx 与 SetWindowOrgEx 解析 这两个函数,用来改变视端口和窗口的原点,并都具有改变轴的效果,以致(0,0)不再指左上角. 「视端口」是依据设备坐标(图素)的 ...
- (转载)C# GDI+ 画简单的图形:直线、矩形、扇形等
GDI+是一种绘图装置接口, 当拖动窗体是,窗体发生移动,window默认为从窗体移动到另一个地方,先发生擦除后再重新画一个窗体: 而我们自己动手画的图(如下面的线),不会重新画:在属性中,Paint ...
- 转载 VC轻松解析XML文件 - CMarkup类的使用方法
VC轻松解析XML文件 - CMarkup类的使用方法http://www.cctry.com/thread-3866-1-1.html VC解析XML文件的工具有很多,CMarkup, tinyXM ...
- GDI 像素(5)
RGB 颜色 使用 RGB 宏可以创建一个由三个整数值(R.G.B)的 COLORREF 值. COLORREF RGB( BYTE byRed, // 红色值(R) BYTE byGreen, // ...
随机推荐
- 关于Html class id 命名规范
CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...
- asp.net 基于ajaxfileupload.js 实现文件异步上传
前台代码: /*修改头像*/ //上传 function _sc() { $(".ckfile").html("") ...
- 【转】XMPP_3920_最靠谱的中文翻译文档
CHENYILONG Blog XMPP_3920_最靠谱的中文翻译文档 Fullscreen © chenyilong. Powered by Postach.io Blog
- 第7月第26天 iOS httpserver
1. cocoahttpserver 1)httpserver [httpServer start:&error] 2)HTTPConnection [newConnection start] ...
- 记关于webpack4下css提取打包去重复的那些事
注意使用vue-cli3(webpack4),默认小于30k不会抽取为公共文件,包括css和js,已测试 经过2天的填坑,现在终于有点成果 环境webpack4.6 + html-webpack-pl ...
- Madgwick IMU Filter
论文链接:http://202.114.96.204/cache/13/03/x-io.co.uk/35c82431852f2aa7d0feede9dc138626/madgwick_internal ...
- Linux Core Dump【转】
转自:http://www.cnblogs.com/hazir/p/linxu_core_dump.html 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中 ...
- 微服务架构及Eureka简介
一.微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服务 ...
- 破解验证码模拟登陆cnblogs
from selenium import webdriver from selenium.webdriver import ActionChains from PIL import Image imp ...
- plaidctf-2016 Pwn试题小结
回顾了一下今年plaidctf Pwn部分的题目,感觉还是蛮有意思的,值得研究一下. 1.unix_time_formatter-76 最简单的一道题,考点是UAF.说是UAF但是其实根本就不算是真正 ...