我有一个由tablelayoutpanel设计的表单。
在一个单元格中,我有一个停靠在该单元格上的面板,并且在面板中是一个停靠在父面板上的标签。
标签自动尺寸功能设置为false。
标签的字体大小必须是动态的,这样当表单重新调整大小(因此面板重新调整大小)时,label.text仍然适合并填充面板而不会被剪切。
我尝试使用TextRenderer.MeasureText / measure字符串来查找字体的正确大小,但无法解决问题。
感谢。
答案 0 :(得分:1)
我编写了一个基于this link的代码段,可以帮助您:
using System.Drawing;
public partial class Form1 : Form
{
public int initialWidth;
public int initialHeight;
public float initialFontSize;
public Form1()
{
InitializeComponent();
AutoScaleMode = AutoScaleMode.None;
// Sets the initial size of the variables
initialWidth = Width;
initialHeight = Height;
initialFontSize = LabelFont.Font.Size;
LabelFont.Resize += LabelFont_Resize;
}
private void LabelFont_Resize(object sender, EventArgs e)
{
SuspendLayout();
// Get the proportionality of the resize
float proportionalNewWidth = (float)Width / initialWidth;
float proportionalNewHeight = (float)Height / initialHeight;
// Calculate the current font size
LabelFont.Font = new Font(LabelFont.Font.FontFamily, initialFontSize *
(proportionalNewWidth > proportionalNewHeight ? proportionalNewHeight : proportionalNewWidth),
LabelFont.Font.Style);
ResumeLayout();
}
}
使用Label调整大小的方法,您可以确定更改的比例并从中定义新字体。我希望这能解决你的问题。