2012-03-01 185 views
0

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

这就是说,当一个窗口调整大小时,标签本身会调整它的字体和背景框来做同样的事情。

我知道我在窗体的Resize事件上触发了一些东西,但我不知道是什么。谁能帮忙?

回答

1

这是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); 
} 
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; 
     } 

你可能会想根据确定性地计算比例系数有多大形式的面积增加/减少,但代码至少应该让你的效果。