真受不了,居然所有人都认为微软不会在DrawString内置一个换行的功能么
各种循环、循环、循环……效率很低下好吧
看看,人家官网直接给出的方法
http://msdn.microsoft.com/zh-cn/library/baw6k39s(v=vs.80).aspx
用 GDI+ 在矩形中绘制换行文本
使用 DrawString 重载方法,使用时传入您需要的文本、 Rectangle 或 RectangleF 、 Font 以及 Brush 。
string text1 = "Draw text in a rectangle by passing a RectF to the DrawString method.";
using (Font font1 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
{
RectangleF rectF1 = new RectangleF(30, 10, 100, 122);
e.Graphics.DrawString(text1, font1, Brushes.Blue, rectF1);
e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rectF1));
}
用 GDI 在矩形中绘制换行文本
使用 TextFormatFlags 枚举值指定应通过 DrawText 重载方法换行的文本,使用时传入您需要的文本、 Rectangle 、 Font 以及 Color 。
string text2 = "Draw text in a rectangle by passing a RectF to the DrawString method.";
using (Font font2 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))
{
Rectangle rect2 = new Rectangle(30, 10, 100, 122);
// Specify the text is wrapped.
TextFormatFlags flags = TextFormatFlags.WordBreak;
TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags);
e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rect2));
}
编译代码
前面的示例需要:
-
PaintEventArgs e,它是 PaintEventHandler 的一个参数。