我正在尝试绘制一个多色字符串。
由于没有默认方法可以执行此操作,因此我正在尝试使用textrenderer.drawText绘制Char本人的字符串char,但是,当我尝试测量字符串时,它并未正确报告第一个字符宽度。
通过字符串测量以前的字符宽度来绘制char i的字符,以找到下一个字符的位置。
要获得宽度,我使用:
TextRenderer.MeasureText(word.Substring(0, i),
drawFont,
new Size(int.MaxValue, int.MaxValue),
(TextFormatFlags.Left | TextFormatFlags.NoPadding)).Width
正常工作但对于第一个字符,产生输出类似:
L OREMIPSUM
基本上,如果只有一个字符 - 尽管有我的旗帜,但它还是用填充物测量。
我可以使用:
TextRenderer.MeasureText(String.Concat("*", chr.ToString(), "*"), font).Width - TextRenderer.MeasureText("**", font).Width
测量第一个字符并获得正确的宽度值,但是当我应该有更好的方法时,我感觉就像在做一些黑客。
我也可以在上面的方法中使用字符串来避免使用TexTrenderer.measuretext,并且在没有第一个字符问题的情况下仍然可以获得正确的结果。
在我的情况下,如何测量字符的正确方法?
您应该使用来自图形对象的测量线。还要查看TexTrenderer.measuretext和Graphics.measurestring的大小不匹配。它将解释差异。