gpt4 book ai didi

c# - 通过动态更改字体大小使按钮控件中的文本适合调整大小

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:28 24 4
gpt4 key购买 nike

我有一个应用程序,每 5 秒在按钮上设置不同长度的文本。我如何调整文本大小以使其适合按钮。我还需要在调整窗口大小时调整字体大小。(我的按钮大小在调整窗口大小时增加,因为我在其上使用了停靠属性。

以下是我用来做的代码,但是当文本长度为 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(因为您设置了它的停靠属性)并确定字体相对于表单高度的比例:

private void button1_SizeChanged(object sender, EventArgs e)
{
button1.Font = new Font(button1.Font.FontFamily, this.Size.Height / 10) ;
}

关于c# - 通过动态更改字体大小使按钮控件中的文本适合调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com