【发布时间】:2012-02-03 06:06:35
【问题描述】:
我正在尝试创建一个控件,它基本上允许我在彼此下方绘制不同的字符串。 但是,字符串的宽度可能不会大于控件的宽度。 为了解决这个问题,我正在考虑将一个 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 循环来测量每个字符的宽度等等。 有没有更简单的方法?
【问题讨论】:
-
您是否考虑过仅使用带有 Wrapping 的 TextBlock?您尝试构建的控件看起来很像 ListView。为什么是自定义控件?
-
我确实考虑过使用 ListView。但是,我的控件代表我的程序能够打印的时间表。而且打印出来的 ListView 看起来不太好,所以我一直在尝试创建自己的控件。哦,对不起,我忘了提到我正在使用 WinForms。我已经编辑了我的问题。
标签: c# winforms gdi+ word-wrap