不一樣打印設備的分辨率不一樣。
熱敏打印機、針式打印機、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("宋體"));vi