首先,问题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)
可能重复([如何衡量字符串的像素宽度在.NET drawed超过Drawing.Bitmap?] http://stackoverflow.com/questions/2555739/how-to-measure-the-pixel-width-of-the-string-drawed-over-drawing-bitmap-in-net) – 2012-07-29 11:36:23
如果问题没说清楚MeasureString不工作,这将是重复的 – Petr 2012-07-29 14:49:57
没有怎样及何时“它不工作”更好的说明和代码,包括MeasureString和束带在一起,这恰恰是不是一个真正的问题。拿出一个小小的测试用具。 – 2012-07-29 16:12:00