您的位置:程序门 -> vc/mfc -> 界面



drawtext()在设置了字符间距后输出错位,恭请高手指点!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


drawtext()在设置了字符间距后输出错位,恭请高手指点![已结贴,结贴人:msz321]
发表于:2007-10-26 17:22:58 楼主
首先我把映射模式设置成了isotropic,逻辑单位为0.01mm,原点位于屏幕左上角,x、y分别向右向下增加(主要为了使用起来较习惯、而且精度较高,因不习惯为mm_himatric是y向上增加)。
然后用settextcharacterextra()设置了字符间距之后,用drawtext()输出,当字符串中同时包含中文和英文的时候会错位,就是英文部分的字符和相邻的中文重合了,叠在一起了。
如果不设置字符间距不会出现错位问题。
把drawtext()的那几个参数都试了个遍也没搞定,清哪位高手给指点一下阿!小弟谢谢了先!
发表于:2007-10-26 18:40:491楼 得分:0
你用的哪种字体?
发表于:2007-10-27 09:26:582楼 得分:0
我默认用的arial
这和字体有关系吗?可是我的字体是要允许用户自定义的啊  
发表于:2007-10-27 09:42:443楼 得分:80
有关系,而且mapmode改了之后,settextcharacterextra()的数值要增大很多才行,大概16,   17倍的样子
-------------------------------------
mm_isotropic只保证1:1
mm_himetric才是0.01
发表于:2007-10-27 10:21:084楼 得分:0
"settextcharacterextra()的数值要增大很多才行"是什么意思呢   ?是增大了才有间距效果还是增大了才会出现错位?
好像我用drawtext()的时候它认为isettextcharacterextra()的参数是像素,比如settextcharacterextra(5),会在字之间空5个像素的样子
用textout的时候它认为是逻辑单位,比如settextcharacterextra(500),会在字之间空5mm的样子(还有textout不会出现错位情况,但是这个函数不能输出tab,而且也不方便设置对其方式,所以才想用drawtext()的)
----------------------
mm_isotropic的精度不是可以自定义的吗   我就是仿照者mm_himetric的精度来设置的,和mm_himetric的唯一不同就是y轴的方向啊  
发表于:2007-10-27 10:24:395楼 得分:0
对了,还有个tabbedtextout可以输出tab,但是设了字符间距之后也会出现前面说的那种错位,郁闷啊   微软怎么就不能给一个什么都好用的函数呢
发表于:2007-10-27 10:34:016楼 得分:0
设一下字体试试,我没用settextcharacterextra(),字也是重的,设了下字体就好了
发表于:2007-10-27 10:35:007楼 得分:0
谢谢“凤矶”的回帖!
自己再顶顶,等周一过去照“凤矶”的建议改个字体试试看
发表于:2007-10-27 10:39:048楼 得分:0


改成宋体就ok了
发表于:2007-10-27 11:10:079楼 得分:0
unicode才是王道。。。什么字体都一样


快速检索

最新资讯
热门点击