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

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

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

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

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

  1. 图形变量
  2. 文本字符串-您要适合的字符串
  3. 以磅为单位的最大大小(标签属性)-文本需要适合的大小
  4. 默认字体

所以这是函数:

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和默认字体。

From: https://bytes.com/topic/c-sharp/insights/914616-change-label-text-font-size-dynamically-based-string-length

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值