我正在尝试创建一个控件,它基本上允许我在彼此下面绘制不同的字符串。
但是,字符串的宽度不能大于控件的宽度。
为了解决这个问题,我正在考虑将 RectangleF 对象传递给 Graphics.DrawString 方法。这将包装比传递的矩形宽度更宽的字符串。虽然这确实解决了如果字符串太大而无法看到整个字符串的问题,但还有另一个问题。如果我尝试这样的事情
Graphics g = e.Graphics; // Paint event
g.DrawString(someText, someFont, someBrush, new PointF(0, 0), someRectangleF);
g.DrawString(someMoreText, someFont, someBrush, new PointF(0, 12), someRectangleF);
问题是,如果 someText 被换行,第三行将在第一个文本上绘制文本,从而使其难以/无法阅读。
我正在寻找这个问题的解决方案,并且发现了一些有趣的链接,其中包括使用 for 循环来测量每个字符的宽度等等。
有没有更简单的方法可以做到这一点?
你可以使用图形.测量字符串 http://msdn.microsoft.com/en-us/library/9bt8ty58.aspx获取字符串尺寸并相应地绘制下一个字符串的方法?
SizeF size = g.MeasureString(someText, someFont, someRectangleF.Size.Width);
g.DrawString(someText, someFont, someBrush, new PointF(0, 0), someRectangleF);
g.DrawString(someMoreText, someFont, someBrush, new PointF(0, size.Height), someRectangleF);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)