您好,欢迎来到99网。
搜索
您的当前位置:首页[C#]根据字符串长度动态更改标签文本字体大小

[C#]根据字符串长度动态更改标签文本字体大小

来源:99网

好吧,我遇到了一个问题,其中基于系统选择的语言,我的标签文本将会更改。 这在C#/。Net中称为本地化(本地化是一种实现本地和面向文化的应用程序的技术)。 因此,如果标签字符串为“ Increase”(增加),则Bugarian语言中的同一字符串将为“Увеличаваненаскоростта”。

因此,从上面的示例中我们可以看到,文本大小随语言的变化而变化。

如果要文本适合的最大大小,则需要更改该文本的字体。

为此,我们需要以下参数:

所以这是函数:

private Font GetCorrectFont(Graphics graphic, String   text, Size maxStringSize, Font labelFont)
{
  //based on the Label string,we need to vary font size 
  //current width the text string
  SizeF sizeStr = graphic.MeasureString(text, labelFont);
  Font fontStr = new Font(labelFont.Name,labelFont.Size);
  while (sizeStr.Width > maxStringSize.Width)
  {
    //adjust the font size based on width ratio
    float wRatio = (maxStringSize.Width) / sizeStr.Width;
    //reduce the font size
    float newSize = (int)(fontStr.Size * wRatio); 
 //this creates a new font with given fontfamily name
    fontStr = new Font(labelFont.Name, newSize); 
    sizeStr = graphic.MeasureString(text, fontStr);
   }
   return fontStr;
} 
//Calling convention
//I have a label in my GUI, I need to call this function on "Paint" event 
private void lblIncrease_Paint(object sender, PaintEventArgs e)
{
 lblIncrease.Font =  GetCorrectFont(e.Graphics, lblIncrease.Text, lblIncrease.MaximumSize, lblIncrease.Font);
}

注意:您必须在标签属性中定义Maximumsize和默认字体。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务