如何实现与设备无关的填充打印(200分)

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

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi的Brush做出来的填充在屏幕上显示是正常的,但打印出来就不对了,分辨率不对,
如何解决。

我试了CreateDIPatternBrushPt,但没成功,请帮帮忙。
 
具体我也没做过,不过可以根据打印机的打印分辨率来演算出具体打印的分辨率。
 
在PDF和PS中是很简单的,只要对填充的位图指定分辨率即可,其他与Brush差不多,
应该能有办法用GDI做到这一点,起码在NT下应该能实现。
 
要用 GetDeviceCaps 计算屏幕和打印机的分辨率比例啊。
屏幕最高不过 72/96 ,打印机最一般的也是 300 dpi ,高档的 2400 都有。
建议你好好看一下 API 文档的 SetWindowExtEx, SetViewPortExtEx 函数。
 
直接调用API函数,
设置屏幕分辨率与打印机的分辨率的对应关系。
 
用Screen.PixelsxPerinch获取屏幕的分辨率,用GetDeviceCaps(Printer.Handle,Logpixelsx)
和GetDeviceCaps(Printer.Handle,LogPixelsy)获取打印机的分辨率,相除可得缩放比例,
再根据缩放比例进行打印。
 
我也碰到同样问题,用了个最蠢的办法,得到打印机的DPI,自己填充。
 
zhaoyipeng:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部