求助DrawString绘制文本的自动换行问题

ttsffgg 2013-10-18 10:57:25
遇到问题的函数如下
Public Sub DrawString
(s As String,
font As System.Drawing.Font,
brush As System.Drawing.Brush,
layoutRectangle As System.Drawing.RectangleF,
format As System.Drawing.StringFormat)

System.Drawing.Graphics 的成员
摘要:
使用指定 System.Drawing.StringFormat 的格式化属性,
用指定的 System.Drawing.Brush 和 System.Drawing.Font
对象在指定的矩形绘制指定的文本字符串。




问题:
我使用此函数绘制某些文本时,其自动换行结果不太符合我的预期,比如说字符串

aaaa(b)01234567890 '这是未换行的情况

我通过调整layoutRectangle参数限制其绘制区域的宽度为所需宽度的一半后,预期的效果应该是
aaaa(b)01
234567890
也就是说我想要字符串从中间换行成两行

而实际结果是
aaaa(b)
012345678
90
该函数在括号后面强制换行了

请问如何解决
...全文
675 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttsffgg 2013-12-29
  • 打赏
  • 举报
回复
引用 5 楼 xianfajushi 的回复:
有例子
谢谢:)
  • 打赏
  • 举报
回复
threenewbee 2013-10-18
  • 打赏
  • 举报
回复
如果你是等宽字体,直接按照字符数切割。
threenewbee 2013-10-18
  • 打赏
  • 举报
回复
引用 2 楼 overown 的回复:
回2楼 你说的情况我理解,比如apple肯定不能换行为 app lp 但是我所要绘制的这些文本中的字母仅仅是独立的字母而已,我不需要它们组合起来表示一个单词或其它什么意思.所以我想强制关闭这个功能
GDI+函数木有那么智能。
ttsffgg 2013-10-18
  • 打赏
  • 举报
回复
回2楼 你说的情况我理解,比如apple肯定不能换行为 app lp 但是我所要绘制的这些文本中的字母仅仅是独立的字母而已,我不需要它们组合起来表示一个单词或其它什么意思.所以我想强制关闭这个功能
threenewbee 2013-10-18
  • 打赏
  • 举报
回复
换行是按照标点符号来的。不是按照字母来的。 好比 你好么 换行成为 你好 么 而不是 你女 子么 也许你觉得后者才是你想的。 但是大多数老外,他们预期就是按照单词和标点拆分的。 如果你非要按照字母拆分。你得先自己测量好长度,切割好字母,加上换行符,再画上去。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧