通过动态更改字体大小来调整调整大小的按钮控件中的文本
问题描述:
我有一个应用程序,其中每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;
}
}
答
您可以将按钮的autosize
属性设置为true,这将使得它的宽度适合内容。
关于更改字体,您可以处理按钮的SizeChanged(因为您将它设置为适当的TY),并判断相对于所述窗体的高度的字体一些比率:在我的申请
private void button1_SizeChanged(object sender, EventArgs e)
{
button1.Font = new Font(button1.Font.FontFamily, this.Size.Height/10) ;
}
自动调整大小=真dosent化妆SENCE作为大小取决于如我已经使用坞属性窗口的大小。 –
您可以将宽度适合文本,但不能将文本适合宽度。如果您设置了dock属性,则Autosize属性没有任何意义。 – user3185569
是的,但我想在这里是动态减少或增加字体大小,以便它可以正确地适合按钮。 –