C ++,win32,gdi打印:DrawEdge没有达到DrawText的程度?

时间:2009-01-25 21:39:58

标签: c++ winapi printing gdi

我正在尝试使用DrawEdge和DrawText(http://msdn.microsoft.com/en-us/library/ms534882.aspxhttp://msdn.microsoft.com/en-us/library/ms533909.aspx功能打印(使用打印机,在纸上,而不是在屏幕上)行和文本。它们工作得非常好,但是,当我试图到达纸张的底部(离它约35毫米)时,线条就会停止被拉伸。我认为这是我的打印机的限制。但是,当我绘制文本时,我的打印机在那里打印没有问题,甚至更低。 DrawEdge有没有办法在那里划线?有没有其他方法可以做到这一点?这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

我可以想到几个原因:

  • 当您绘制边缘时,您绘制文本时设置的剪裁区域设置不同。

  • 剪裁区域已设置,但打印机未始终剪切文本。某些打印机将打印整个字符,即使其中只有一部分位于裁剪区域内。您可以使用GetDeviceCapsTEXTCAPS一起检查其文字剪辑功能。如果是这种情况,可能会显示剪裁区域底部附近的文本打印,但其他类型的图形(如线条)将被剪裁。

  • 您错误地了解了该网页的可打印区域。这是什么类型的打印机?许多打印机无法在底边35毫米内打印。驱动程序报告的可打印区域是什么? (将GetDeviceCapsPHYSICALOFFSETYPHYSICALHEIGHT一起使用,以确定您实际可以打印的页面有多低。)

祝你好运!