DrawString()函数共有 6 个重载版本,分别为:
1> DrawString(string str, Font font, Brush brush,
PointF ptf);
2> DrawString(string str, Font font, Brush brush,
float x, float y);
3>
DrawString(string str, Font font, Brush brush, RectangleF
rectf);
4> DrawString(string str, Font font, Brush brush,
PointF ptf, StringFormat sf);
5> DrawString(string str, Font font, Brush brush,
float x, float y, StringFormat sf);
6> DrawString(string str, Font font, Brush brush,
RectangleF rectf, StringFormat sf);
每个重载的前 3
个参数总是相同的,区别在于后一个参数分别为 PointF、float、RectangleF,以及是否使用格式化文本。是否使用
PointF 或者 float 坐标属于个人习惯,两种方式具有完全相同的功能。但 RectangleF
版本的重载有所不同,使用这个版本,DrawString() 将要绘制的字符串限定在一个矩形内,可选的 StringFormat
参数将决定如何限定文本的位置。如果将 ClientRectangle 传递给 DrawString() 函数,并且将
StringFormat 的 LineAlignment、Alignment 设定为 Center,则文本将在客户区中间显式。
示例代码如下:
protected
override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics
gac = e.Graphics;
StringFormat
sf = new StringFormat();
sf.LineAlignment
= StringAlignment.Center;
sf.Alignment
= StringAlignment.Center;
gac.DrawString("this
is a string.\x2014 this is a string.", new Font(Font.FontFamily,
50, FontStyle.Bold), new SolidBrush(Color.Gold),
this.ClientRectangle, sf);
}
运行结果如下:

为了在用鼠标拖动改变窗体大小后,能立即对窗体进行重绘,这里可以选择重写 OnResize() 方法或者在构造函数(或
Form_Load 事件)中设置 ResizeRedraw 属性为 true。
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
//this.Refresh();
}
或
public Form()
{
InitializeComponent();
//this.ResizeRedraw
= true;
}
注:
\x2014
为长破折号的 Unicode 字符码。
加载中,请稍候......