void GetPixelsPermm(double& iPixelPermX, double& iPixelPermY)
 {
  //获得屏幕的宽(像素值)
  double fx=GetSystemMetrics (SM_CXSCREEN);
  //获得屏幕的高(像素值)
  double fy=GetSystemMetrics (SM_CYSCREEN);
  //获取屏幕的HDC
  HDC hdcScreen = GetDC(NULL);
  // Pixel per inch
  double fDPIX = (double)GetDeviceCaps(hdcScreen, LOGPIXELSX);
  double fDPIY = (double)GetDeviceCaps(hdcScreen, LOGPIXELSY);
  //象素数 / DPI = 英寸数
  double fWidthI = fx / fDPIX;
  double fHeightI = fy / fDPIY; 
  //英寸数 * 25.4 = 毫米数
  double fWidthM = fWidthI*25.4;
  double fHeightM = fHeightI*25.4;
  // 每个毫米的像素
  iPixelPermX = fx/fWidthM;
  iPixelPermY = fy/fHeightM;

double dTwipsX = fWidthI*1440;// 1 缇就是 1/1440 英寸、、X屏幕总缇数
  double dTwipsY = fHeightI*1440;// 1 缇就是 1/1440 英寸、、Y屏幕总缇数
  double dPixelsX= dTwipsX/fx; // 每个像素的缇数
  double dPixelsY= dTwipsY/fy;
  double dTwipsPermm = dTwipsX/fWidthM; // 屏幕上每毫米的缇数
  // 获取打印机相关参数
  CString csPrinter;
  OpenDefaultPrinter(csPrinter);
  HDC hdc = NULL;
  if((hdc = CreateDC(_T("Printer"), csPrinter, NULL,NULL)) != 0)
  {
   // 打印机分辨率
   double fpx = GetDeviceCaps(hdc,HORZRES);
   double fpy = GetDeviceCaps(hdc,VERTRES);
   // 打印机DPI Pixel per inch
   double fPDPIX = GetDeviceCaps(hdc, LOGPIXELSX);
   double fPDPIY = GetDeviceCaps(hdc, LOGPIXELSY); // Pixel per inch
   //象素数 / DPI = 英寸数
   double fPWidthI = fpx / fPDPIX;
   double fPHeightI = fpy / fPDPIY;
   //英寸数 * 25.4 = 毫米数
   double fPWidthM = fPWidthI*25.4;
   double fPHeightM = fPHeightI*25.4;
   // 打印机总缇数,// 1 缇就是 1/1440 英寸、、X
   double dPTwipsX = fPWidthI*1440;
   double dPTwipsY = fPHeightI*1440;
   // 每个像素的缇数
   double dPixelsX= dPTwipsX/fpx;
   double dPixelsY= dPTwipsY/fpy;
   // 打印机上每毫米的缇数
   double dPTwipsPermmX = dPTwipsX/fPWidthM;
   double dPTwipsPermmY = dPTwipsY/fPHeightM;
  }
 }
 打印机添加元素/
 //#include <WinSpool.h>    
 //#pragma comment(lib, "Winspool.lib")
 /
 void OpenDefaultPrinter(CString& csPrinter)
 {
  HANDLE hPrinter = NULL;
  DWORD dwSize = 0;   
  if((!GetDefaultPrinter(NULL, &dwSize)) && GetLastError()==ERROR_INSUFFICIENT_BUFFER)   
  {   
   TCHAR *szPrinter = new TCHAR[dwSize+1];   
   if(GetDefaultPrinter(szPrinter, &dwSize))   
   {    /* 这一段可以注解
    if(SHInvokePrinterCommand(   
     NULL, //GetSafeHwnd(),     
     PRINTACTION_PROPERTIES,   
     szPrinter,   
     NULL,   
     FALSE))   
    {   
     //OpenPrinter(szPrinter, &hPrinter, NULL);
     csPrinter = szPrinter;
    }  */ 
   }
   delete []szPrinter;   
  }

VC 获取屏幕及打印机的像素,DPI,英寸数,毫米数,缇数(twips)相关推荐

  1. VC获取屏幕dpi,win32绘图适配高dpi模式,windows屏幕缩放图像拉伸失真问题

    VC获取屏幕dpi,win32绘图适配高dpi模式 默认MFC支持高dpi模式 通过winapi提供接口获取屏幕dpi 使用==StretchBlt==代替==BitBlt==进行图像绘制 注意==M ...

  2. VC++获取屏幕大小第二篇 物理大小GetDeviceCaps 上

    上一篇< VC++获取屏幕大小第一篇像素大小GetSystemMetrics >中介绍了使用GetSystemMetrics函数来获取屏幕的像素大小,本篇将介绍使用GetDeviceCap ...

  3. VC++获取屏幕大小第一篇 像素大小GetSystemMetrics

    < VC++获取屏幕大小第一篇 像素大小 GetSystemMetrics >和< VC++获取屏幕大小第二篇物理大小GetDeviceCaps 上 >和< VC++获取 ...

  4. VC++获取屏幕大小第三篇 物理大小GetDeviceCaps 下

    本篇文章(MoreWindows)将获取屏幕的物理大小后计算屏幕对角线长度并换算成英寸.这样可以方便大家查看自己电脑屏幕是多少英寸的.为了更方便大家使用,本文将提供电脑屏幕大小查看器下载(配源码)下载 ...

  5. android 获取图片像素密度,android 获取屏幕的密度和像素 点

    经过测试发现屏幕的像素点 如果 density =1 那么 1dp = 1px density =2 那么 1dp = 2px density =3 那么 1dp = 3px 在字体设置的时候用dp比 ...

  6. Android 获取屏幕尺寸(设备对角线的英寸数)

    使用屏幕的实际的宽高,根据勾股定理来计算设备的尺寸. 由于Android系统版本的不同和有的设备具有虚拟按键,需要根据不同的SDK的版本使用不同的方法来获取屏幕的实际宽高. 计算方法: Math.sq ...

  7. mfc获取别的计算机是否在线,VC获取并修改计算机屏幕分辨率(MFC)

    //检测当前分辨率 int Width = GetSystemMetrics(SM_CXSCREEN); int Height = GetSystemMetrics(SM_CYSCREEN); DEV ...

  8. mfc改计算机名称,VC获取并修改计算机屏幕分辨率(MFC)

    //检测当前分辨率 int Width = GetSystemMetrics(SM_CXSCREEN); int Height = GetSystemMetrics(SM_CYSCREEN); DEV ...

  9. vc得到屏幕的当前分辨率方法

    vc得到屏幕的当前分辨率方法: 1.Windows API调用 int width = GetSystemMetrics ( SM_CXSCREEN ); int height= GetSystemM ...

最新文章

  1. java-方法。(新手)
  2. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)
  3. 《流畅的Python》一副扑克牌中的难点
  4. 优点 spark_spark(一)
  5. golang 位操作
  6. linux mint php mysql_linux mint 下mysql中文支持问题
  7. 21年计算机网络原理综合测评,(年对口升学计算机综合测评卷.doc
  8. 计算机考研考833的院校,太原理工大学
  9. [4.14校内训练赛by hzwer]
  10. raspberry ubuntu 修改源为清华_在Windows7基础上安装Ubuntu系统,实现双系统操作
  11. 十天学会单片机(2)点亮一个发光管
  12. 在windows server 2008 r2上安装nokia pc 套件
  13. 计算机开机错误怎么办,电脑开机蓝屏错误代码0X0000007E怎么办?
  14. 人脸识别翼闸使用规范_介绍市场上最常用的通道翼门和人脸识别的使用
  15. 什么是EMC?什么是EMI?什么是EMS?电磁兼容详解(一)
  16. UOS安装 MySQL5.7
  17. Java手机号校验、短信验证码、验证码工具类
  18. 趣味选择题.html
  19. Java工具使用(导读)
  20. 855 AIMA学习笔记(by菜菜子)

热门文章

  1. 水库湖泊水雨情监测系统 小型水库雨水情自动测报
  2. zblog php wordpress,zblogphp好用吗?个人站长使用zblog和wordpress对比后我的选择
  3. mysql 增加合计行_SQL:给查询添加一个合计行
  4. cam350菜单怎么切换成中文_电子设计软件CAM350各菜单使用说明(二)
  5. 【学习笔记】Property Testing(性质检验)
  6. 【JAVASE系列】11_酒店订房系统
  7. IT求职经验总结——面试和准备策略
  8. canva怎么组合_canvas图形组合
  9. fiddler手机抓包完整教程
  10. CAS:1353016-71-3,DBCO-NHS ester,二苯并环辛烯-活性酯,一种胺反应化学试剂