请教一个打印的问题(50分)

  • 主题发起人 主题发起人 abcxca
  • 开始时间 开始时间
A

abcxca

Unregistered / Unconfirmed
GUEST, unregistred user!
大家在写打印控件的时候(特别是有图的情况下),是否先在画布上画好(Canvas),
然后送打印机打印?
如果是这样,那么画布的像素多底取多大的值,才能在不同分辩率的打印机上都
打印相同大小的图.(因同一个图在分辩率为300,600的打印机上打出来的大小是不同
的.
总体来说,就是无论是在什么打印机下,打出来的都是A4纸这样大小,并且文字不
会失真太多.
谁有这方面的经验或代码?
 
我有,有vc++的
可以帮你
 
以打印机的点数为度量单位.
 
可以取水平方向、纵向每英寸打印机的点数呀
比如要画10mm,点数为
Trunc(10/25.38*Vdpi+0.5);(单位为像素点)
其中
Vdpi := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
 
nX:= GetDeviceCaps(printer.Handle, LOGPIXELSX);
nY:= GetDeviceCaps(printer.Handle, LOGPIXELSY);
获得打印机分辨率
打印机分辨率是说一英吋打多少个点。
rt:= Rect(0, 0, nX, nY);
这样不管在什么样的打印机上都为1英吋长一英吋宽的一个矩形
 
多谢大家!
这些我都知道,我是想在一个bmp图中画好,然后送到打印机,但bmp的长和宽到底取
什么值较合理呢? 同时还有文字,也要先写在bmp图中,最后打印.
总不能根据打印机的分辨率来取bmp的长和宽吧?
如果这样,岂不是在600点/寸的打印机上要用一个几千*几千的bmp图来打一张A4纸?
如果将图缩放的话,那么bmp取多大,才能在各种打印机上的打印都能满足?
 
后退
顶部