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 }
  • 相关阅读:
    POJ 3624 Charm Bracelet 简单01背包
    POJ 1426 Find The Multiple BFS
    HDU 2612 Find a way BFS,防止超时是关键
    P3399 丝绸之路(线性二维dp)
    洛谷P1726 上白泽慧音(Tarjan强连通分量)
    codevs1557 热浪(堆优化dijkstra)
    P1462 通往奥格瑞玛的道路(二分答案+最短路)
    洛谷P1330 封锁阳光大学(二分图染色)
    洛谷P1341 无序字母对(欧拉回路)
    洛谷P1613 跑路(最短路+倍增)
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2046325.html
Copyright © 2011-2022 走看看