xiaoyusmile

不同打印设备的分辨率不同。
热敏打印机、针式打印机、PDF虚拟打印机,分辨率不同,显示相同的距离(例如5cm)所需要的像素数不同。
所以,如果创建GDI对象时,采用固定的像素值,那么在不同的打印设备上打印出来的图形、文字的实际大小是不同的。
例如,创建字体,nHeight设为48,在热敏打印机上打印出来,文字高7mm,在针式打印机上打印出来就是6mm。
为了在所有打印设备上,打印出相同的图形图像,需要根据打印机的分辨率动态创建GDI对象。

代码示例:
int iPixelYPerinch = pDC->GetDeviceCaps(LOGPIXELSY);//每英寸垂直逻辑像素数
double dPixelYPerMM = iPixelYPerinch/25.4; //每毫米垂直逻辑像素数,1英寸对应25.4毫米

//创建打印字体(图例、井深),2.5毫米
int nHeight = (int)(2.5 * dPixelYPerMM);
CFont *pFont_Prt = new CFont;
pFont_Prt->CreateFont(nHeight,
0,0,0,
FW_NORMAL,FALSE,FALSE,0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FF_MODERN,
_T("宋体"));

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-23
  • 2021-08-15
  • 2021-10-19
  • 2021-04-28
  • 2021-11-24
  • 2021-09-03
  • 2022-02-16
猜你喜欢
  • 2022-01-19
  • 2021-12-15
  • 2021-11-05
  • 2022-12-23
  • 2021-12-19
相关资源
相似解决方案