GetTextExtentPoint32A是根据屏幕计算的,没有转换成打印机的量度,
建议把所有的图形用copyrect,所有的字用textout显示到一张图上,
然后打印这张图,就在不会有问题了。
建议把所有的图形用copyrect,所有的字用textout显示到一张图上,
然后打印这张图,就在不会有问题了。
解决方案 »
- delphi richedit或者rxrichedit怎么插入GIF动画
- 帮忙看一下,怎么解决?
- 求解:Delphi 关于多行删除
- Dev Express Printting system的报表中如何能把页码加上去呢???
- 如何获得操作系统的位数?是32位的还是64位的。
- -----dbchart图形对齐问题-----
- 关于*.bpl文件的动态装入(100分)
- InstallShield生成的安装程序有问题。快来帮忙,快来拿分!
- 各位帮帮忙,怎样读写一个二进制文件?急!!!!!!!(答对了给高分)
- 如何在delphi中调用excel?
- 如何通过SOAP来调用一个SMS的WEB服务,100大洋
- 请教关于数据库的问题以及文件的操作问题!!!!
建议把所有的图形用copyrect,所有的字用textout显示到一张图上,
然后打印这张图,就在不会有问题了。
GetTextExtentPoint32A好像不是完全根据屏幕计算的吧,因为给它传递一样的字符串,但给它打印机画布的DC,预览面板的DC,它返回的值是不一样的。
你说对了,第一个参数是指定设备的,所以不是完全根据屏幕计算的,
谢谢你的提醒,非常感谢。
不过这个可能是单位的问题,
打印机上每个点阵的宽和高到底是多少,GetTextExtentPoint32A反回的是不是点阵数,可能打印不正常的原因就在这里,你在找找相关资料,
如果不行,我刚提供的方法应该能解决问题。
跟据MSDN,GetTextExtentPoint32A返回的逻辑单位,其实我在打印的时侯,一切都很正常,但是在打印预览的时侯,我给打印预览面板设置了跟打印机一样的TFont,并把预览面板的逻辑大小映射为打印纸的大小,但调用GetTextExtentPoint32A得到的大小就是比打印机要大一些。
另外问一句,你用的是CSDN助手吗?
因为预览是输出在屏幕上,打印是输出在打印机上,
而两个表示的单位也是不一样的,
预览用的是向素,而打印用的不是象素,所以反回不一样是应该的。‘另外问一句,你用的是CSDN助手吗?’
我不明白你的意思,我没有用什么助手