我有一个固定大小的标签,大约 100 像素宽和 20 像素高。
当我将一个长字符串放入标签时,文本换行到第二行但我看不到第二行,因为标签的大小是固定的。
我不想换到第二行,而是希望字体大小缩小,以便字符串显示在标签中的一行中。有谁知道执行此操作的简单方法?
编辑:
下面的代码对我有用(大部分时间)。我不想做任何递归的事情。有时文本仍然会溢出到另一行。我假设是因为我不能真正使用标签的整个宽度。我该如何补偿?
private void Label_TextChanged(object sender, EventArgs e)
{
Label label = sender as Label;
if (label != null && label.Text.Length != 0)
{
SizeF size = new SizeF();
using (Graphics g = label.CreateGraphics())
{
size = g.MeasureString(label.Text, label.Font);
}
Single x = (label.Width) / size.Width;
Single y = (label.Height) / size.Height;
Single scaler = x > y ? y : x;
using (Font font = label.Font)
{
label.Font = new Font(font.Name, font.SizeInPoints * scaler);
}
}
}
最佳答案
这很容易做到。使用 Graphics.MeasureString(...)确定字符串所需的宽度,然后逐渐使字体越来越小,直到字符串所需的宽度等于或小于标签的宽度。
关于c# - 自动调整固定大小标签中的文本以避免文本跳到第二行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058858/