通过动态更改字体大小来调整调整大小的按钮控件中的文本

问题描述:

我有一个应用程序,其中每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) ; 
} 
+0

自动调整大小=真dosent化妆SENCE作为大小取决于如我已经使用坞属性窗口的大小。 –

+0

您可以将宽度适合文本,但不能将文本适合宽度。如果您设置了dock属性,则Autosize属性没有任何意义。 – user3185569

+0

是的,但我想在这里是动态减少或增加字体大小,以便它可以正确地适合按钮。 –