• [转载存档]可以改变文本行距(行间距)的Label


    费了一番周折终于解决了,以下若有不当之处敬请各位指教,谢谢!
    //////////////////////////////////////////////////////
    ///
    ///功能:可以改变文本行距(行间距)的Label
    ///作者:emanlee
    ///用于:c#   2003,2005
    ///时间:2006-8-10
    ///
    /////////////////////////////////////////////////////
    using   System;
    using   System.ComponentModel;
    using   System.Collections.Generic;
    using   System.Diagnostics;
    using   System.Text;
    using   System.Drawing;

    namespace   compass.Common
    {
            public   partial   class   myLabel   :   System.Windows.Forms.Label
            {
                    int   lineDistance   =   5;//行间距

                    public   int   LineDistance
                    {
                            get   {   return   lineDistance;   }
                            set   {   lineDistance   =   value;   }
                    }
                    public   myLabel()
                    {
                            InitializeComponent();
                    }

                    public   myLabel(IContainer   container)
                    {
                            container.Add(this);

                            InitializeComponent();
                    }
                    protected   override   void   OnPaint(System.Windows.Forms.PaintEventArgs   e)
                    {
                            Graphics   g   =   e.Graphics;
                            String   drawString   =   this.Text;
                            Font   drawFont   =   this.Font;
                            SolidBrush   drawBrush   =   new   SolidBrush(this.ForeColor);
                            SizeF   textSize   =   g.MeasureString(this.Text,   this.Font);//文本的矩形区域大小
                            int   lineCount   =   Convert.ToInt16(textSize.Width   /   this.Width)   +   1;//计算行数

                            this.Height   =   Convert.ToInt16((textSize.Height   +   lineDistance)   *   lineCount);//计算调整后的高度
                            this.AutoSize   =   false;
                            float   x   =   0.0F;
                            float   y   =   0.0F;
                            StringFormat   drawFormat   =   new   StringFormat();
                            int   step   =   1;
                            lineCount   =   drawString.Length;//行数不超过总字符数目
                            for   (int   i   =   0;   i   <   lineCount;   i++)
                            {
                                    //计算每行容纳的字符数目
                                    int   charCount;
                                    for   (charCount   =   0;   charCount   <   drawString.Length;   charCount++)
                                    {
                                            string   subN   =   drawString.Substring(0,   charCount);
                                            string   subN1   =   drawString.Substring(0,   charCount   +   1);
                                            if   (g.MeasureString(subN,   this.Font).Width   <=   this.Width
                                                    &&   g.MeasureString(subN1,   this.Font).Width   >   this.Width)
                                            {
                                                    step   =   charCount;
                                                    break;
                                            }
                                    }
                                    string   subStr;
                                    if   (charCount   ==   drawString.Length)//最后一行文本
                                    {
                                            subStr   =   drawString;
                                            e.Graphics.DrawString(subStr,   drawFont,   drawBrush,   x,   Convert.ToInt16(textSize.Height   *   i)   +   i   *   LineDistance,   drawFormat);
                                            break;
                                    }
                                    else
                                    {
                                            subStr   =   drawString.Substring(0,   step);//当前行文本
                                            drawString   =   drawString.Substring(step);//剩余文本
                                            e.Graphics.DrawString(subStr,   drawFont,   drawBrush,   x,   Convert.ToInt16(textSize.Height   *   i)   +   i   *   LineDistance,   drawFormat);
                                    }
                            }
                    }
            }

  • 相关阅读:
    jQuery学习笔记(一):入门
    jQuery学习笔记(二):this相关问题及选择器
    数据库基础
    有关程序员转行的想法
    在团队中如何带领新手——阅读有感
    C#中的集合类——ArrayList
    .NET基础——ASSCII码表
    C#中的文件操作2
    C#中的文件操作1
    C#中的StringBuilder
  • 原文地址:https://www.cnblogs.com/jizonghai/p/2605090.html
Copyright © 2020-2023  润新知