用DrawText绘制一句文本,
用来测试的文本是“文本000aaabbbccc9900a”,目标位图的宽度放不下这些字符,从9那个被截掉了(如图1).
图片见:http://javenreal.googlepages.com/break.htm加上了“DT_WORDBREAK”后,换行倒是换了,但没有按预期从9那里换,而是从0那里就换了(如图2).用了传说中的“DT_EDITCONTROL” 也没有起色。
用了DrawTextEx,效果和不带Ex的相同。谁有办法让DrawText严格按照“字符”换行,而不要按照“单词”换行??其实这个问题应该有很多人遇到过,不知道有没有人解决。另,我是在c#里边用,c#找不到方法所以用vc试试,如果有人能直接在c#下解决更好!
用来测试的文本是“文本000aaabbbccc9900a”,目标位图的宽度放不下这些字符,从9那个被截掉了(如图1).
图片见:http://javenreal.googlepages.com/break.htm加上了“DT_WORDBREAK”后,换行倒是换了,但没有按预期从9那里换,而是从0那里就换了(如图2).用了传说中的“DT_EDITCONTROL” 也没有起色。
用了DrawTextEx,效果和不带Ex的相同。谁有办法让DrawText严格按照“字符”换行,而不要按照“单词”换行??其实这个问题应该有很多人遇到过,不知道有没有人解决。另,我是在c#里边用,c#找不到方法所以用vc试试,如果有人能直接在c#下解决更好!
因为每个字符的宽度是固定的,
==========================
您这话说得好像太随意了吧?并不是所有的字体宽度都是固定的。========================
回复人:liuxiuk() ( 二级(初级)) 信誉:100 2007-07-11 20:05:02 得分:0
?
ls 的是正解..
========================
你这个跟风不动脑筋的更可恶
你能保证你的位图的宽度刚好能容纳你字符串的一段?
你不赚麻烦就用getcharwidth32或是其它的方法一个字符一个字符的计算吧
combine the second one with DT_NOFULLWIDTHCHARBREAK
===================================================
可叹啊,终于有明白人提醒了我,这哥们还是在上学吗?不错哦。最终结果,必须要这3个常量一起才能完美的实现效果:
DT_WORDBREAK|DT_EDITCONTROL|DT_NOFULLWIDTHCHARBREAK就剩下另外一个问题了,这个效果任何在c#里边做到呢??
c#调用api看起来让人不爽。