好吧,我遇到了一个问题,其中基于系统选择的语言,我的标签文本将会更改。 这在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和默认字体。