我有一个应用程序,每隔5秒就会在按钮上设置不同长度的文本。 如何调整文本大小以使其适合按钮。 另外我需要在调整窗口大小时调整字体大小。(调整大小窗口时我的按钮大小会增加,因为我在其上使用了dock属性。
以下是我以前使用的代码,但是当文本长度为2或更短时,它的工作效果不是很好。(文本弹出一点不在控件中)
public static void FitControlFont(Control control)
{
if (control.Text.Length == 0)
{
return;
}
try
{
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);
}
}
catch (Exception ex)
{
if (Exceptions.IsCritical(ex))
{
throw;
}
return;
}
}
答案 0 :(得分:0)
您可以将按钮的autosize
属性设置为true,这样可以使宽度适合内容。
关于更改字体,您可以处理按钮的SizeChanged(因为您设置了它的dock属性)并确定字体相对于表单高度的某些比率:
private void button1_SizeChanged(object sender, EventArgs e)
{
button1.Font = new Font(button1.Font.FontFamily, this.Size.Height / 10) ;
}