Работа с гарнитурами и размерами шрифтов

Работа с гарнитурами и размерами шрифтов

Давайте теперь построим более сложное приложение. Позволяющее пользователю манипулировать объектом Font, поддерживаемым формой. Это приложение предоставит пользователю возможность указать гарнитуру шрифта, используя встроенный набор гарнитур, доступный путем выбора Сервис?Гарнитура из меню. Пользователю также будет позволено косвенно управлять размером объекта Font с помощью объекта Timer Windows Forms. Если пользователь активизирует Timer, выбрав из меню Сервис?Рост?, то размер объекта Font начнет увеличиваться (до максимального верхнего предела) через регулярные интервалы времени. При этом отображаемый текст будет постепенно увеличиваться, что обеспечит анимационный эффект "живого текста". Наконец, третий элемент меню Сервис будет называтъся Список шрифтов и показывать список всех шрифтов, установленных на машине конечного пользователя. На рис. 20.9 демонстрируется логика меню, о котором идет речь.

Рис. 20.9. Меню проекта FontApp

Чтобы начать реализацию приложения, добавьте в форму член Timer (с именем swellTimer), строку (strFontFace) для представления текущего названия гарнитуры шрифта и целое число (swellValue) для представления величины корректировки для размера шрифта. В окне проектирования формы сконфигурируйте Timer так, чтобы он генерировал событие Tick каждые 100 миллисекунд.

public partial class MainForm: Form {

 private Timer swellTimer = new Timer();

 private int swellValue;

 private string strFontFace = "WingDings";

 public MainForm() {

  InitializeComponent();

  BackColor = Color.Honeydew;

  CenterToScreen();

  // Конфигурация таймера.

  swellTimer.Enabled = true;

  swellTimer.Interval = 100;

  swellTimer.Tick += new EventHandler(swellTimerTick);

 }

}

В обработчике события Tick увеличьте значение члена swellValue на 5. Напомним, что целое число swellValue будет добавляться к текущему размеру шрифта, чтобы обеспечивался простой эффект анимации (предполагается, что swellValue будет ограничено сверху максимальным значением 50). Чтобы не допустить мерцания, которое может происходить при перерисовке всей области клиента, при вызове Invalidate() будет обновляться только верхняя прямоугольная область формы.

private void swellTimer Tick(object sender, EventArgs e) {

 // Увеличение текущего значения swellValue на 5.

 swellValue += 5;

 // Если значение больше или равно 50, сбросить его в ноль.

 if (swellValue ›= 50) swellValue = 0;

 // Обновление минимальной области для уменьшения мерцания.

 Invalidate(new Rectangle(0, 0, ClientRectangle.Width, 100));

}

Теперь, когда с каждым циклом Timer обновляются верхние 100 пикселей области клиента, нужно найти что-нибудь подходящее для визуализации. В обработчике Paint формы создайте объект Font на основе выбранной пользователем гарнитуры шрифта (она выбирается с помощью соответствующего пункта меню) и текущего значения swellValue (оно задается таймером Timer), Настроив объект Font, поместите сообщение в центр соответствующего прямоугольника.

private void MainForm Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Размер шрифта должен находиться в диапазоне от 12 до 62,

 // в зависимости от swellValue.

 Font theFont = new Font(strFontFace, 12 + swellValue);

 string message = "Привет GDI+";

 // Вывод сообщения в центре прямоугольника.

 float windowCenter = this.DisplayRectangle.Width/2;

 SizeF stringSize = g.Measure.String(message, theFont);

 float startPos = windowCenter – (stringSize.Width/2);

 g.Drawstring(message, theFont, new SolidBrush(Color.Blue), startPos, 10);

}

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

private void arialToolStripMenuItem_Click(object sender, EventArgs e) {

 strFontFace = "Arial";

 Invalidate();

}

Обработчик Click для пункта меню Рост? будет использоваться для запуска и остановки процесса увеличения текста (т.е. для разрешения и отключения анимаций). Здесь используйте свойство Enabled объекта Timer так, как показано ниже.

private void swellToolStripMenuItem_Click(object sender, EventArgs e) {

 swellTimer.Enabled = !swellTimer.Enabled;

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

8.2.3.6.1 Гарнитуры и кегли шрифтов

Из книги Информационная технология ПРОЦЕСС СОЗДАНИЯ ДОКУМЕНТАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОГРАММНОГО СРЕДСТВА автора Автор неизвестен


6.1.7. Установка Windows-шрифтов

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

6.1.7. Установка Windows-шрифтов В этом подразделе мы обсудим, как установить в системе Windows-шрифты. Подключитесь к Интернету и откройте браузер Firefox. С помощью браузера (или с помощью команды wget, d4x - не важно) вам нужно закачать пакет, размещенный по адресу


11.4.2. Форматы файлов шрифтов

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

11.4.2. Форматы файлов шрифтов В недавние времена буквально каждый графический редактор или издательская программа использовали свой формат файлов шрифтов и, как правило, одни программы не поддерживали форматы других. Со временем число реально используемых форматов


Использование шрифтов

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Использование шрифтов О том, как изменить размер шрифта, вы уже узнали из урока 5.1, но кроме размера можно изменять и многие другие параметры шрифтов. Команды для изменения формата шрифтов находятся в группе Шрифт вкладки Главная. На рис. 5.25 приведен фрагмент документа с


Работа с семействами шрифтов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Работа с семействами шрифтов Пространство имен System.Drawing определяет также тип FontFamily, предлагающий абстракцию для группы гарнитур, имеющих одинаковый базовый дизайн, но с определенными вариациями стиля. Семейство шрифтов, например, такое как Verdana, может включить в себя


Изменение размера шрифтов

Из книги Windows Vista автора Вавилов Сергей

Изменение размера шрифтов Если у вас есть проблемы со зрением и экранные шрифты кажутся вам слишком мелкими, можете увеличить их размер. Делается это в специальном окне, которое открывается при переходе по ссылке Изменить размер шрифта в окне Персонализация.Здесь вы


20.4. Конвертирование шрифтов Windows

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

20.4. Конвертирование шрифтов Windows Вы уже знаете, как подключать шрифты. Для этого достаточно прописать путь к каталогу со шрифтами в файле XF86Config и перезапустить сервер X. Теперь разберемся, как использовать шрифты Windows. Наверняка, у вас есть некоторые шрифты в Windows, которые


1.11. Как включить antialiasing шрифтов в XP?

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

1.11. Как включить antialiasing шрифтов в XP? Делается это в Display Properties, закладка Appearance, кнопка Effects... Надо поставить галочку напротив Use following metod to smooth edges if screen font. Выбрав Standard, вы включите стандартную поддержку АА, которая была в ОС от Microsoft ещё со времён W95, включается при большом


Глава 15 Серверы шрифтов

Из книги Сетевые средства Linux автора Смит Родерик В.

Глава 15 Серверы шрифтов В цивилизованном мире не найдется человека, который никогда не видел букв. Одна и та же буква может выглядеть по-разному. Например, буква "P" в заголовке главы отличается от той же буквы в тексте абзаца. Буква "P", отображаемая курсивом, отличается от


Использование серверов шрифтов

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Использование серверов шрифтов Одним из параметров, задаваемых в конфигурационном файле X Window, является шрифт, или путь к шрифту. В пакете XFree86 для этого используется запись FontPath. Она включается в файл XF86Config, который обычно хранится в каталоге /etc или /etc/X11. Данный параметр


Форматы файлов шрифтов

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Форматы файлов шрифтов Существуют два типа шрифтов: растровые и контурные (контурные шрифты часто называют масштабируемыми). Эти типы шрифтов имеют разные свойства и обрабатываются различными способами. Большинство серверов шрифтов, предназначенных для выполнения в


Форматы растровых шрифтов

Из книги VBA для чайников автора Каммингс Стив

Форматы растровых шрифтов Область отображения большинства устройств, предназначенных для вывода шрифтов (в том числе дисплеев и принтеров), состоит из отдельных прямоугольных элементов, называемых пикселями. Каждый пиксель может быть окрашен в тот или иной цвет. На


Управление размерами блочных контейнеров

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Управление размерами блочных контейнеров И первое, что мы сделаем, — заставим блочные контейнеры на наших Web-страницах изменять свои размеры так, чтобы занимать всю клиентскую область окна Web-обозревателя и при этом не выходить за ее пределы.Сначала откроем таблицу


Управление размерами блочных контейнеров

Из книги автора

Управление размерами блочных контейнеров И первое, что мы сделаем, — заставим блочные контейнеры на наших Web-страницах изменять свои размеры так, чтобы занимать всю клиентскую область окна Web-обозревателя и при этом не выходить за ее пределы.Сначала откроем таблицу


Выбор шрифтов

Из книги автора

Выбор шрифтов Хотя текст, который вы размешаете в форме и элементах управления, используя параметры, предлагаемые VBA по умолчанию, выглядит вполне сносно, можно выбрать гарнитуры шрифтов по своему вкусу. С помощью свойства Font (Шрифт), которое есть у форм и большинства


Поддержка шрифтов во Flash

Из книги автора

Поддержка шрифтов во Flash А теперь самое время поговорить о различных шрифтах и их поддержке во Flash.Из главы 1 мы помним, что все графические изображения можно разделить на векторные и растровые. Аналогично этому, на векторные и растровые можно разделить и все компьютерные