Подключение сторонних шрифтов в Windows Form

      Не секрет, что шрифтов в интернете для работы можно найти многие тысячи и на любой вкус. Инструкция поможет вам подключить сторонние шрифты к вашему приложению.
Создаем проект Windows Form в Microsoft Visual Studio и добавляем на главную форму три раза компонент «Label»


Получаем демонстрационную форму для шрифтов.


      Далее переходим в код формы, есть два способа это сделать, нажимаете клавишу «F7» или делаете клик правой клавишей мыши по форме и выбираете из контекстного меню пункт «Перейти к коду».


Если у вас все получилось, вы увидите листинг главной формы.


Для работы со шрифтами вам будет необходимо выполнить подключение следующего пространства имен:
using System.Drawing.Text;

      После выполнения указанных действий создайте рядом с исполняемым файлом программы папку «font», куда вы будете складывать все необходимые вам для работы шрифты.


Вернитесь в ваш проект и добавьте следующие два метода.
PrivateFontCollection font;
private void fontsProjects()
{
    //Добавляем шрифт из указанного файла в em.Drawing.Text.PrivateFontCollection
    this.font = new PrivateFontCollection();
    this.font.AddFontFile("font/Alice.ttf");
    this.font.AddFontFile("font/Modestina.ttf");
    this.font.AddFontFile("font/serp_and_molot.ttf");
}

private void fonts()
{
    //Задаем шрифт текста, отображаемого элементом управления.
    label1.Font = new Font(font.Families[0], 31);//Alice.ttf
    label2.Font = new Font(font.Families[1], 31);//Modestina.ttf
    label3.Font = new Font(font.Families[2], 31);//serp_and_molot.ttf
}

      Для выполнения этих двух методов добавьте их выполнение после метода инициализации всей формы, по умолчанию он выглядит так, InitializeComponent().

Т.е у вас получится вот такой вариант:

InitializeComponent();
//Загружаем шрифты в приложение
fontsProjects();
//Применяем шрифты к компонентам
fonts();
//Устанавливаем текст в компонентах
label1.Text = "Alice";
label2.Text = "Modestina";
label3.Text = "Серп и Молот";  
Запускаете приложение клавишей «F5» и если вы все делали по инструкции, то получите вот такой вариант:


      Если вы хотите усложнить немного данный проект, то можно реализовать меню для установки шрифтов, каждому компоненту. Добавьте два компонента «ComboBox», которые будут отвечать за выбор элемента на форме и применяемого к нему шрифта, кнопку «Button», для применения этих настроек и «NumericUpDown», для ввода размера шрифта. У вас получится вот такой вариант:

      Далее переходим к коду, сделайте двойной клик левой клавишей мыши по форме. Вы перейдете в метод «Form1_Load», который выполняется при открытии этой формы. Добавьте в него приведенный ниже листинг и получите вот такой вариант:
List list;
private void Form1_Load(object sender, EventArgs e)
{
    //Создаем список компонентов
    list = new List();            

    //Заполняем первый ComboBox именами компонентов
    foreach (Control control in Controls)
    {
        comboBox1.Items.Add(
            //Текст в компоненте
            control.Text.ToString()+", "+
            //Имя компонента
            control.Name.ToString().Replace(@"System.Windows.Forms.",""));
        //Заполняем список именами компонентов
        list.Add(control.Name.ToString().Replace(@"System.Windows.Forms.", ""));
    }
    
    //Получаем 32-разрядное целое число, представляющее общее число шрифтов
    int count = font.Families.Length;

    //Заполняем второй ComboBox именами шрифтов
    for (int j = 0; j < count; ++j)
    {
        comboBox2.Items.Add(font.Families[j].Name);
    }
}
      После этого перейдите на вкладку конструктора формы и сделайте двойной клик левой клавишей мыши по компоненту «Button», для создания метода «button1_Click», выполняемого при нажатии на кнопку «Приметь». Далее добавьте в метод, приведенную ниже строчку кода.
(Controls[list[comboBox1.SelectedIndex]]).Font =
 new Font(font.Families[comboBox2.SelectedIndex], (int)numericUpDown1.Value);
      Запускаете приложение клавишей «F5» и если вы все делали по инструкции, то получите вот такой вариант:

Ссылка для скачивания примера: Яндекс.Диск


Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!