加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

GDI+_DrawString()函数居中绘制文本

(2009-07-01 00:40:11)
标签:

gdi

杂谈

分类: ASP.NET

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);
    }

运行结果如下:

GDI+_DrawString()函数居中绘制文本

    为了在用鼠标拖动改变窗体大小后,能立即对窗体进行重绘,这里可以选择重写 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 字符码。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有