zoukankan      html  css  js  c++  java
  • C#GDI+绘制多行文本和格式化文本

    绘制多行文本需要计算行高,然后绘出字符串:

    1 private void Form1_Paint(object sender, PaintEventArgs e)
    2 {
    3 Graphics g = e.Graphics;
    4 g.FillRectangle(Brushes.White,this.ClientRectangle);
    5 string s = "This string is long enough to wrap.";
    6 s += "With a 200px-width rectangle,and a 12pt font.";
    7 s += "it requires six lines to display the stirng in its entirety.";
    8
    9 Font f = new Font("Arial", 12);
    10 Rectangle r = new Rectangle(20, 20, 200, f.Height * 6);
    11 g.DrawRectangle(Pens.Black,r);
    12 g.DrawString(s, f, Brushes.Black, r);
    13
    14 f.Dispose();
    15 }

    绘制竖向文本,需要指定StringFormat类为DirectionVertical,即:StringFormat sf = new StringFormat(StringFormatFlags.DirectionVertical);

    然后应用于文字

        SizeF sizef = g.MeasureString(s, f, Int32.MaxValue, sf);

       // Create and draw the rectangle
       // Also draw the text string (using the StringFormat object)
       RectangleF rf = new RectangleF(20, 20, sizef.Width, sizef.Height);

    代码如下:

    1 private void Form1_Paint(object sender,
    2 System.Windows.Forms.PaintEventArgs e)
    3 {
    4 Graphics g = e.Graphics;
    5 g.FillRectangle(Brushes.White, this.ClientRectangle);
    6
    7 // Create a text string, a Font object, and a StringFormat object
    8   String s = "Accrington Stanley";
    9 StringFormat sf = new StringFormat(StringFormatFlags.DirectionVertical);
    10 Font f = new Font("Times New Roman", 14);
    11
    12 // Calculate the size of the text string's containing rectangle
    13   SizeF sizef = g.MeasureString(s, f, Int32.MaxValue, sf);
    14
    15 // Create and draw the rectangle
    16 // Also draw the text string (using the StringFormat object)
    17 RectangleF rf = new RectangleF(20, 20, sizef.Width, sizef.Height);
    18 g.DrawRectangle(Pens.Black, rf.Left, rf.Top, rf.Width, rf.Height);
    19 g.DrawString(s, f, Brushes.Black, rf, sf);
    20
    21 f.Dispose();
    22 }
  • 相关阅读:
    Ubuntu学习
    MYSQL中group_concat有长度限制!默认1024
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    PHP开发接口使用RSA进行加密解密方法
    WebSocket实战之————Workerman服务器的安装启动
    vim 命令图解
    ubuntu下安装Apache+PHP+Mysql
    Ubuntu 下Apache安装和配置
    android调试输出
    使用AsyncTask异步更新UI界面及原理分析
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2046325.html
Copyright © 2011-2022 走看看