我试图创建一个控制,基本上允许我在下面绘制不同的字符串。 但是,字符串的宽度可能不会大于控件的宽度。 为了解决这个问题,我正在考虑将一个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循环来测量每个字符的宽度等等。 有没有更简单的方法来做到这一点?
您是否考虑过仅使用带包装的TextBlock?您正在尝试构建的控件看起来很像ListView。为什么要自定义控件? – Paparazzi 2012-02-02 21:55:16
我确实考虑过使用ListView。但是,我的控制代表了我的程序能够打印的时间表。并且打印的ListView看起来不太好,所以我一直在试图创建自己的控件。哦,对不起,我忘了提及我正在使用WinForms。我编辑了我的问题。 – haiyyu 2012-02-02 21:58:22