PixPerMX:= trunc(GetDeviceCaps(Printer.Handle, LOGPIXELSX)/25.4);(50分)

  • 主题发起人 主题发起人 suduan
  • 开始时间 开始时间
S

suduan

Unregistered / Unconfirmed
GUEST, unregistred user!
除以25.4代表什么?
 
一英寸等于 2.54 厘米,肯定和这个有关。
也等于 25.4 毫米!!!!!!!!
 
nHorRes:=GetDeviceCaps(Printer.Handle, HORZRES);是A4纸的像素宽度,
选择了字体:
printer.Canvas.Font.Name:='Ms Sans Serif';
printer.Canvas.Font.size:=12;
得到当前字体下字符的宽度:
nCharWidth:=printer.Canvas.TextWidth('A');
得到每毫米的像素数:
PixPerMX := trunc(GetDeviceCaps(Printer.Handle, LOGPIXELSX)/25.4);
nCharWidth的单位是毫米吗?
因为nCharWidth*PixPerMX得到的是像素阿
 
nCharWidth:=printer.Canvas.TextWidth('A');
//结果是像素
PixPerMX := trunc(GetDeviceCaps(Printer.Handle, LOGPIXELSX)/25.4);
//是每毫米的像素数。
nCharWidth*PixPerMX:在打印机上,将 1 像素放大为 1 毫米
把nCharWidth 看成毫米,就需要 nCharWidth*PixPerMX 个象素
 
nCharWidth:=printer.Canvas.TextWidth('A');
既然结果是一个字符像素
而nHorRes:=GetDeviceCaps(Printer.Handle, HORZRES);是A4纸的像素宽度
那么nHorRes/nCharWidth得到应该是可以打印的字符数,为什么nCharWidth
要乘以每毫米的像素数呢?
 

放大!!!!!!!!!!!!!
打印机上的一个象比屏幕上的一个象素小得多!!!!!!
和打印机的分辩率有关。
 
后退
顶部