【发布时间】:2012-07-29 10:48:38
【问题描述】:
首先,问题How to measure width of character precisely? 得到了回答,对于这种情况并没有真正的帮助,所以这不是重复的。
我有一个字符串。我使用graphics.DrawString 绘制,但是当我需要在其后放置另一个时,我需要知道前一个字符串的精确宽度。
为此,我使用 graphics.MeasureString 和:
StringFormat format = new StringFormat(StringFormat.GenericTypographic);
format.Alignment = StringAlignment.Center;
format.Trimming = StringTrimming.None;
format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
我已经尝试了许多其他功能,就像 TextRendered.MeasureText 一样,但是所有可能的参数组合都失败了。
上面提到的 MeasureString 组合最接近我需要的组合(它在大多数情况下都有效,特殊字符除外),但是使用 # 之类的字符打破它。宽度或短或长。
有没有办法获得由 DrawString 函数生成的文本的精确大小? DrawString 如何计算绘图区域的大小?肯定是其他函数,因为大小总是不同的。
整个应用程序的源代码在这里https://gitorious.org/pidgeon/pidgeon-main/(我使用这个的文件是https://gitorious.org/pidgeon/pidgeon-main/blobs/master/scrollback/SBABox.cs)
【问题讨论】:
-
如果问题明确没有说 MeasureString 不起作用,那就是重复的
-
如果没有更好地描述“它不起作用”的方式和时间,以及同时包含 MeasureString 和 DrawString 的代码,这并不是一个真正的问题。想出一个小测试用例。