Изменение размера метки и шрифта формы в зависимости от размера окна - PullRequest
0 голосов
/ 01 марта 2012

Мне нужна помощь в изменении размера этикетки и размера шрифта в зависимости от размера окна.

То есть, когда размер окна изменяется, сам ярлык настраивает его шрифт и фоновое поле, чтобы сделать то же самое.

Я знаю, что что-то вызывает событие Resize формы, ноЯ не знаю что.Кто-нибудь может помочь?

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Это в 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 голосов
/ 01 марта 2012

По умолчанию для метки установлено значение «Авторазмер», которое должно само по себе позаботиться (при условии, что вы подразумеваете «фоновое поле»).

Итак, все, что вам нужно сделать, это изменить шрифт на основе нового размера формы. Это должно сделать это:

 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;
        }

Возможно, вы захотите детерминистически рассчитать масштабный коэффициент на основе увеличения / уменьшения площади формы, но этот код должен, по крайней мере, дать вам эффект.

...