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

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

Смежные вопросы