2012-03-01 228 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; 
     } 

你可能會想根據確定性地計算比例係數有多大形式的面積增加/減少,但代碼至少應該讓你的效果。