根据窗口大小调整窗体的标签和字体大小

时间:2012-03-01 04:22:10

标签: vb.net winforms resize

我正在寻找帮助根据窗口大小调整标签大小和字体大小的帮助。

也就是说,当窗口调整大小时,标签本身会调整字体和背景框来执行相同操作。

我知道我在表单的Resize事件上触发了一些东西,但我不知道是什么。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

这是在C#中,但它可能对你有帮助。

public Form1()
{
    InitializeComponent();
    this.Resize += new EventHandler(Form1_Resize);
    label1.AutoSize = false;
    label1.Size = new Size(100, 50);
    label1.BackColor = Color.White;
}

void Form1_Resize(object sender, EventArgs e)
{
    label1.Size = new Size(this.ClientSize.Width / 3, this.ClientSize.Height / 3);
    label1.Font = new Font("Arial", this.ClientSize.Height / 20);
}

答案 1 :(得分:2)

默认情况下,标签设置为AutoSize,它应该自行处理(假设你的意思是“背景框”)。

因此,您需要做的就是根据表单的新大小更改字体。这应该这样做:

 private int _lastFormSize;
        private void Form1_Resize(object sender, EventArgs e)
        {
            var bigger = GetArea(this.Size) > _lastFormSize;
            float scaleFactor = bigger ? 1.1f : 0.9f;
            label1.Font = new Font(label1.Font.FontFamily.Name, label1.Font.Size*scaleFactor);

            _lastFormSize = GetArea(this.Size);
        }

        private int GetArea(Size size)
        {
            return size.Height*size.Width;
        }

您可能希望根据表单的面积增加/减少多少来确定性地计算比例因子,但该代码至少应该让您产生效果。

相关问题