不同打印设备的分辨率不同。
热敏打印机、针式打印机、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("宋体"));