博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可以改变文本行距(行间距)的Label
阅读量:6541 次
发布时间:2019-06-24

本文共 2762 字,大约阅读时间需要 9 分钟。

////////功能:可以改变文本行距(行间距)的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);                }            }        }    }}

 

转载地址:http://tbsdo.baihongyu.com/

你可能感兴趣的文章
mongodb group
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
springboot项目自定义注解实现的多数据源切换
查看>>
特此说明
查看>>
使用flume替代原有的scribe服务
查看>>
Windows Server 2008 启用公共文件夹共享
查看>>
Apple Watch的非“智能手表”卖点
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
SilverLigth学习笔记--控制 Silverlight控件样式(转)
查看>>
poj3262
查看>>