博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义Label行间距
阅读量:6676 次
发布时间:2019-06-25

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

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace Record

{
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)
{
try
{
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;
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);
}
}
}
catch
{ }
}
}
}

本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2009/12/18/1626997.html,如需转载请自行联系原作者

你可能感兴趣的文章
面向对象设计原则一:单一职责原则(SRP)
查看>>
Codeforces 839D Winter is here【数学:容斥原理】
查看>>
在js中怎样获得checkbox里选中的多个值?
查看>>
基于AllegroGraph实现Protege设计知识库模型的存储步骤
查看>>
线程中释放锁的方式
查看>>
VM环境下Linux虚拟机扩展存储空间操作方法总结
查看>>
PDB文件:每个开发人员都必须知道的
查看>>
深入理解生产者消费者
查看>>
EL表达式获取参数值${param.name}等
查看>>
Is there anyway to discover which ip addresses are connected to the db?
查看>>
远程桌面不能复制粘贴的解决办法
查看>>
实战案例解析电商对抗羊毛党的策略与技术
查看>>
Vivado开发工具熟悉之工具使用杂记
查看>>
spin_lock &amp; mutex_lock的差别?
查看>>
Egret Engine(白鹭引擎)介绍及windows下安装
查看>>
一个小巧的C++Log输出到文件类 (转)
查看>>
Javascript动态操作CSS总结
查看>>
ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象...
查看>>
Linux 配置网络
查看>>
Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表
查看>>