我正在尝试编写一种方法来调整文本字体大小,以便文本在控件中正确且完全可见。
我为此尝试的方法如下,
public static void FitControlFont(Control control)
{
if (control.Text.Length == 0)
{
return;
}
Font currentFont = control.Font;
Graphics graphics = control.CreateGraphics();
SizeF newSize = graphics.MeasureString(control.Text, control.Font);
graphics.Dispose();
float factorX = control.Width / newSize.Width;
float factorY = control.Height / newSize.Height;
float factor = factorX > factorY ? factorY : factorX;
if (control.InvokeRequired)
{
control.Invoke(new MethodInvoker(delegate { control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor); }));
}
else
{
control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor);
}
}
上述方法效果很好,但是,我的问题是如何将文本用作多行?我得到单行文本(因为文本看起来非常小)。
我使用标签和按钮作为我在文本更改时需要调整文本字体大小的表单中的控件。