我在尋找幫助,根據窗口大小調整標籤大小和字體大小。根據窗口大小調整標籤和窗體字體的大小
這就是說,當一個窗口調整大小時,標籤本身會調整它的字體和背景框來做同樣的事情。
我知道我在窗體的Resize事件上觸發了一些東西,但我不知道是什麼。誰能幫忙?
我在尋找幫助,根據窗口大小調整標籤大小和字體大小。根據窗口大小調整標籤和窗體字體的大小
這就是說,當一個窗口調整大小時,標籤本身會調整它的字體和背景框來做同樣的事情。
我知道我在窗體的Resize事件上觸發了一些東西,但我不知道是什麼。誰能幫忙?
這是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);
}
默認情況下,標籤設置爲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;
}
你可能會想根據確定性地計算比例係數有多大形式的面積增加/減少,但代碼至少應該讓你的效果。