Wah*_*eed 6 label system.drawing telerik winforms c#-4.0
我正在寻找一种方法,使标签中的文本可以缩放,使其适合整个父容器.我能想到的一种方法是在窗口上重新调整容器大小,然后相应地增大或减小字体大小,但这会限制其可能性.
想知道是否有更好的方法,这可能更像是Winforms应用程序中的锚属性.
我知道答案隐藏在图形对象和绘画事件中的某个地方,使用这两个关键字解决了我的问题。这是在我的特定情况下有效的解决方案。
我只是更改标签的绘制事件的字体大小,如下所示:
private void myLabel_Paint(object sender, PaintEventArgs e)
{
float fontSize = NewFontSize(e.Graphics, parentContainer.Bounds.Size, myLabel.Font, myLabel.Text);
Font f = new Font("Arial", fontSize, FontStyle.Bold);
myLabel.Font = f;
}
Run Code Online (Sandbox Code Playgroud)
NewFontSize 函数如下所示:
public static float NewFontSize(Graphics graphics, Size size, Font font, string str)
{
SizeF stringSize = graphics.MeasureString(str, font);
float wRatio = size.Width / stringSize.Width;
float hRatio = size.Height / stringSize.Height;
float ratio = Math.Min(hRatio, wRatio);
return font.Size * ratio;
}
Run Code Online (Sandbox Code Playgroud)
我还发现这篇文章很有帮助 http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling