ラベルのサイズとフォントサイズをウインドウサイズに基づいて変更するには、ヘルプの検索が必要です。ウィンドウのサイズに基づいてフォームのラベルとフォントのサイズを変更する
つまり、ウィンドウのサイズが変更されると、ラベル自体がそのフォントとバックグラウンドボックスで同じ処理を行うように調整されます。
私はフォームの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;
}
が、そのコードは、少なくともあなたに効果を取得する必要があります:これはそれを行う必要があります。