HELP ME:使用GetDeviceCaps获取打印纸张的物理长宽的问题!!!(27分)

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

sweetychild

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用GetDeviceCaps(参数为PHYSICALWIDTH以及physicalheight)来获取打印纸张的物理长宽并以此来计算换页的问题,
但我发现这样取得的长宽似乎要大于纸张的实际物理长宽,比例似乎也不定,该怎样解决呢?
 
GetDeviceCaps(Printer.Handle,HORZSIZE);//纸宽 ,单位为mm
GetDeviceCaps(Printer.Handle,VERTSIZE);//纸长

GetDeviceCaps(Printer.Handle,HORZRES);//纸宽 ,单位为打印机象素
GetDeviceCaps(Printer.Handle,VERTRES);
 
根本就不对嘛,还不如我自己的呢
 
是想连续打印吧!

在打印机设置里有一项“不可打印区域”有就设置上下空为0,没有就不理它。
正确设置纸张类型和送纸方式,得到纸张的长度,在Printer来输出。你看它连续不连续。

如果打出来的东西要比例,就用上面的象素比长度,然后按你的东西的大小缩放到打印机画布上
出来就是实比例的图。我用这种方法打图再经过一些矫正,打3m长的图,实际误差才1mm。可以
赶上绘图仪。
 
用比例换算很烦所以我想直接取得纸张的长度和宽度
 
getdevicecaps用PHYSICALWIDTH, PHYSICALHEIGHT取得的是dpi值, 这个你也有用?
而且api帮助中也由这么一段:
Note that the physical page is almost always greater than the printable area of the page, and never smaller
 
我不要这个
 

Similar threads

后退
顶部