像素和英寸(50分)

  • 主题发起人 主题发起人 zylsoft
  • 开始时间 开始时间
Z

zylsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
打印中像素和英寸怎样处理?两者和以互换吗>
 
应该和打印机的分辨率有关吧。
 
是啊比如300dpi的打印机中,一英寸的长度就是300象素。
打印机的分辨率越高,一英寸的象素就越多。
 
打印中像素和英寸的对应关系是打印分辨率,又称Dpi,为每英寸多少点,又分为横向与纵向。
通过GetDeviceCaps(printer.Handle,参数);就能得到。具体的参数比较多,可以直接看api的Help
当得到点数后,可以用每英寸2.54厘米进行你想做的换算了。
 
计算机显示器的分辨率为: 72像素/英寸。
打印的分辨率可从GetDeviceCaps(...)中得到。
要实现所见所得(WYSWYG)等功能时将显示器和打印机用同一种尺寸单位,比如英寸、0.1
毫米(1英寸=254X0.1毫米),再将映射到该设备的点数按其分辨率换算。
 
像素与英寸的对应关系与所使用的设备相关。
在不同的打印机上,其对应关系也不同。比如LQ-1600K打印机在默认设置下的对应关系为180像素=1英寸
但在有些打印机上,其水平方向的对应关系与垂直方向的对应关系不同(如EPSON TM-375)。
 
给我50分!
//获取打印机信息
//通常分辨率是指一英寸的点数,1英寸=2.54厘米
//取得每一英寸的点数,分x与y
pointx := getdevicecaps(printer.Handle, logpixelsx);
pointy := getdevicecaps(printer.Handle, logpixelsy);
//计算每毫米多少点
pointx := pointx / 25.4;
pointy := pointy / 25.4;
//打印:其中sbk_detail.yf 等的单位是毫米
printer.begin
Doc;
printer.Canvas.TextOut(sbk_detail.yf * pointx, sbk_yf[j] * pointy, IntToStr(j));
printer.Canvas.TextOut(sbk_detail.hde * pointx, sbk_yf[j] * pointy, '¥'+FLOATToStr(sbk_print[j].hde) + '元');
printer.EndDoc;
 
有没有得到显示器的分辨率?,不同的显示器是否有可能分辨率不同?
在如下的情况:640*480、800*600、1024*768
 
多人接受答案了。
 
后退
顶部