打印问题,各位大虾帮忙
我使用SDK的方法打印一些东西,同时要控制一些字符串的打印位置,但是实际输出的位置总是与我设置的坐标不一样。总是差了5毫米。向右和向下偏移了5毫米,真是见鬼了。怎么回事啊??? 问题点数:100、回复次数:9Top
1 楼mfc168(子非鱼)回复于 2003-12-01 15:08:12 得分 5
有的时候只在程序中设置是不够的,你调整一下打印机Top
2 楼bluebohe(薄荷)回复于 2003-12-01 15:27:53 得分 70
这是由打印硬裁减区决定的,每种打印机都有一个可打印区域,一般小于纸张大小,具体值可以通过GetDeviceCaps()函数得到,根据不同的打印机,不同的驱动程序,不同的纸张大小而变化,而绘图区域是以可打印区域的左上角开始的,不知你明白了没有Top
3 楼bluebohe(薄荷)回复于 2003-12-01 15:30:02 得分 0
pDC->GetDeviceCaps(VERTSIZE);
pDC->GetDeviceCaps(HORZSIZE);
Top
4 楼piero_csa(绝对不动_ALEX)回复于 2003-12-01 15:43:34 得分 5
打印文本,应该很好实现哈,网上这方面的精确定位的资料多的很哈!
vccodeTop
5 楼yintongshun(左岸思雨)回复于 2003-12-01 16:15:53 得分 5
转自:
http://expert.csdn.net/Expert/topic/2398/2398212.xml?temp=.3510706
发现打印预览的图形明显比屏幕显示图形小,怎么办?
这多半是CDC映射模式的选择引起的,缺省状态下,选择的是MM_TEXT模式,MM_TEXT以设备的像素点为单位,而不同设备的像素点的大小不同,打印机的分辨率比显示器要高很多,所以导致同样图形在打印时候变小。解决之道是统一使用其他定长的映射模式,比如MM_HIMETRIC等等(CDC::SetMapMode()改变映射模式)
Top
6 楼zqone(zqone)回复于 2003-12-01 16:16:59 得分 0
谢谢楼上几位兄弟,我现在用
offsetx_s = -GetDeviceCaps(hPrintDc, PHYSICALOFFSETX);
offsety_s = -GetDeviceCaps(hPrintDc, PHYSICALOFFSETY);
得到了打印区域的起始位置,然后进行了换算,情况有所好转,但是依然不如人意,x方向少1mm,y方向多1mm。急死我了!!Top
7 楼piero_csa(绝对不动_ALEX)回复于 2003-12-01 17:28:50 得分 5
已经很不错了,你看银行系统的票据打印,或者是邮局的,哪个的精确到了1mm哦?反正给我打出来的收据,发票等没有一张对了位置的!Top
8 楼lingfeng8888(棱枫)回复于 2003-12-01 17:43:04 得分 10
在你的原点位置(x=0,y=0)的地主画一个水平与垂直相交的十字线,然后与你的图型一起打出来,再用尺子到量那个十字交差的点到你的每个图型是否与你的要求相同.如果相同,说明你的程序设计已经正确了,只是在打印时纸的摆放出现偏差造成的.如果不同,说明你的程序在设计中对图形的位置定位有问题.至于精度问题,可以通过SetMapMode()完成,其中最小的精度为0.1mm.最精细的为0.01mm.Top
9 楼zqone(zqone)回复于 2003-12-02 10:35:10 得分 0
难道就不能再精确些吗?我哭啊!!Top




