C# Label内字体随着字数的增加而自动减小,Label大小不变
Label label
float size 字体的大小
FontStyle fontStyle 字体的粗细
public Label changeLabelFont(Label label,float size,FontStyle fontStyle)
{
System.Drawing.FontFamily ff = new System.Drawing.FontFamily(label.Font.Name);
string content = label.Text;
//初始化label状态
label.Font = new Font(ff, size, fontStyle, GraphicsUnit.Point);
while (true)
{
//获取当前一行能放多少个字======================================================
//1、获取label宽度
int labelwidth = label.Width;
//2、获取当前字体宽度
Graphics gh = label.CreateGraphics();
SizeF sf = gh.MeasureString("0", label.Font);
float fontwidth = sf.Width;
//3、得到一行放几个字
int OneRowFontNum = (int)((double)labelwidth / (double)fontwidth);
//判断当前的Label能放多少列======================================================
//1、获取当前字体的高度
float fontheight = sf.Height;
//2、获取当前label的高度
int labelheight = label.Height;
//3、得到当前label能放多少列
int ColNum = (int)((double)labelheight / (double)fontheight);
//获取当前字符串需要放多少列======================================================
var NeedColNum = Math.Ceiling((double)content.Length / (double)OneRowFontNum);
//如果超出范围,则缩小字体,然后返回再判断一次===================================
if (ColNum <= NeedColNum)
{
size -= 0.25F;
label.Font = new Font(ff, size, fontStyle, GraphicsUnit.Point);
}
else
{
break;
}
}
return label;
}