读书人

小弟我使用DrawText后怎么确定rect

发布时间: 2012-03-30 17:32:09 作者: rapoo

我使用DrawText后如何确定rect
我的HDC是用来输出打印机内容的,我原先使用Textout输出打印内容,现在我用DrawText,要指定rect,我不知道该怎么样给这个结构填值,请大家给点意见,谢谢了,

[解决办法]
看rect的定义:x,y,width,height,就是坐标X轴,Y轴,宽度,高度,具体X,Y的值看你想在什么位置打印出来
[解决办法]
看msdn,DrawText有个参数是返回rect的,第二次DrawText再输出
[解决办法]
你可以把这个rect设置成打印纸的大小,这样所有输出的内容都在这个RECT内,也就是一页的内容.如果想打多页,就再加上换页指令.这么做不用考虑多页打印时会出现计算偏差,打印的内容在最后一行和下一页的第一行出现半个字符
[解决办法]

探讨

看msdn,DrawText有个参数是返回rect的,第二次DrawText再输出

[解决办法]
探讨

引用:

看msdn,DrawText有个参数是返回rect的,第二次DrawText再输出

仁兄仔细
使用
DT_INTERNAL用系统字体来计算正文度量。

[解决办法]
DrawText需要你提供一个矩形的,难道你自己都不知道要输出到哪里吗?

DT_CALCRECT不是解决楼主问题的,这个参数计算文字占用区域大小,区域大小还得加一个开始点,才是一个矩形,楼主还是需要知道自己到底要显示到哪里。

另外,从DrawText提供的参数也可以看出我上面的观点来,它有垂直居中,水平居中等参数,如果每个人都先用DT_CALCRECT得到一个刚好显示完整字符的矩形,那还居中有何意义,因为无论怎么排版,都刚好显示完字符,任何排版效果完全一样!
[解决办法]
你什么都自己做,还用DrawText干什么?TextOut就行了,后者效率高。

如果楼主不知道显示在哪里,你DrawText只能得到一个width和height,还得需要一个起点才能形成一个矩形,比如xy,那么显示矩形就是:(x, x + width) (y y + height),这才是楼主想要的。xy怎么定?
[解决办法]
另外LZ所述之前采用TextOut 其中包括X Y

读书人网 >VC/MFC

热点推荐