首页 新闻 搜索 专区 学院

TextRenderer.DrawText 当字符串长度超过Rectangle.Width时,如何自动换行?

0
悬赏园豆:5 [已解决问题] 解决于 2010-10-08 14:57

比如一个宽20,高100的Rectangle,“换行画这些文字”。

现在用标准类提供的方法,怎么画都不能完全显示,它会做截断处理,而不是换行给我继续画。

要自己计数长度,再一行一行的画么?

谢谢先啦。

烈火★寒冰的主页 烈火★寒冰 | 菜鸟二级 | 园豆:210
提问于:2010-09-26 17:49
< >
分享
最佳答案
0

应该需要自己处理,我这里写了一个函数,你看行不行?

public string func(string yourString,int width)
        {
            StringBuilder newstring = new StringBuilder();

            for (int i = 0; i < yourString.Length; i = i + width)
            {               
                newstring.Append(yourString.Substring(i, width));
                newstring.Append("/r/n");
            }

            return newstring.ToString();
        }

收获园豆:5
小闵 | 小虾三级 |园豆:502 | 2010-09-26 22:15
谢谢了。 现在问题的重点是不字符串处理。 这个实现了其中的一部分功能,不过要稍作改进。 比如:这个到最后一行极可能索引出错。 另外,如果标题中有英语、中文、全角半角混杂,这也是会出问题的。因为这里默认了每个字符的宽度都一样。
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-09-28 15:12
而且最后一行会多出一个空行。下面是解决索引出错和多空行的代码: StringBuilder sb = new StringBuilder(); for (int i = 0; i < Caption.Length; i += cursor) { if (i + cursor >Caption.Length) { cursor = Caption.Length - i; sb.Append(Caption.Substring(i, cursor)); } else { sb.AppendLine(Caption.Substring(i, cursor)); } }
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-09-28 15:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册