当前位置:编程学习 > C#/ASP.NET >>

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

遇到问题的函数如下
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
该函数在括号后面强制换行了

请问如何解决 --------------------编程问答-------------------- 换行是按照标点符号来的。不是按照字母来的。

好比
你好么
换行成为
你好

而不是
你女
子么

也许你觉得后者才是你想的。

但是大多数老外,他们预期就是按照单词和标点拆分的。

如果你非要按照字母拆分。你得先自己测量好长度,切割好字母,加上换行符,再画上去。 --------------------编程问答-------------------- 回2楼
你说的情况我理解,比如apple肯定不能换行为
app
lp
但是我所要绘制的这些文本中的字母仅仅是独立的字母而已,我不需要它们组合起来表示一个单词或其它什么意思.所以我想强制关闭这个功能 --------------------编程问答--------------------
引用 2 楼 overown 的回复:
回2楼
你说的情况我理解,比如apple肯定不能换行为
app
lp
但是我所要绘制的这些文本中的字母仅仅是独立的字母而已,我不需要它们组合起来表示一个单词或其它什么意思.所以我想强制关闭这个功能


GDI+函数木有那么智能。 --------------------编程问答-------------------- 如果你是等宽字体,直接按照字符数切割。 --------------------编程问答-------------------- 有例子
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,