Масштабирование шрифта элемента управления в C # .Net - PullRequest
0 голосов
/ 21 июня 2010

Мы все знаем, что базовый класс Control имеет метод Scale. Проблема заключается в следующем: это абсолютное дерьмо. Хотя он превосходно масштабирует все элементы управления, он не масштабирует шрифты. Так что все мои ярлыки, текстовые поля и кнопки выглядят очень неловко. Было бы так просто просто перебрать все элементы управления формы и изменить шрифт, но Control.Font.Size доступен только для чтения, поэтому foreach (Control C в this.Controls) {C.Font.Size = C.Font. Размер * .8f;} не сработает.

Как лучше всего масштабировать шрифт каждого элемента управления в форме, когда сама форма масштабируется?

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Чтобы изменить размер шрифта элемента управления, вы должны создать новый объект Font и назначить его элементу управления.

Вы можете использовать объект Font в существующем элементе управления в качестве шаблона для создания нового объекта Font, при этом изменяя только нужные свойства шрифта, таким образом:

myControl.Font = new Font(myControl.Font, 
    myControl.Font.Style | FontStyle.Bold);

Здесь также есть учебник по масштабированию шрифтов с примером кода: http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

0 голосов
/ 21 июня 2010

Масштабирование шрифта не так просто, потому что вы не можете контролировать высоту и ширину, у вас есть только одно свойство: Size.

Обычно я интенсивно использую TableLayoutPanel . Затем вы можете установить шрифт Size, и все элементы управления должны (при правильном использовании Docking и AutoSize) хорошо масштабироваться.

Да, и измените размер шрифта, установив для свойства Font Form значение new Font(...)

...