Богатство изобразительных возможностей Windows связано с так называемым дескриптором графического контекста устройства (Device Context, DC) и тремя входящими в него инструментами - шрифтом, пером и кистью. В Delphi созданы специализированные классы-надстройки, существенно упрощающие использование графических инструментов Windows: для контекста - класс TCanvas, для шрифта - TFont, для пера - ТРеп и для кисти - TBrush. Связанные с этими классами объекты автоматически создаются для всех видимых элементов и становятся доступными программе через свойства Canvas, Font, Pen и Brush.

4.4.1. Класс TFont

С помощью класса TFont создается объект-шрифт для любого графического устройства (экрана, принтера, плоттера и т. п.).

Наиболее важные свойства класса перечислены далее.

property Charset: TFontCharSet;

Набор символов. Для русскоязычных программ это свойство обычно имеет значение DEFAULT_CHARSET или RUSSIAN__CHARSET. Используйте значение OEM_CHARSET для отображения текста MS-DOS (альтернативная кодировка).

property Color: TColor;

Цвет шрифта.

property4 Height: Integer;
Высота шрифта в пикселах экрана, property Name: TFontName;

Имя шрифта. По умолчанию имеет значение MS Sans Serif.

property Size: Integer;

Высота шрифта в пунктах (1/72 дюйма). Изменение этого свойства автоматически изменяет свойство Height и наоборот.

property Style: TFontStyles;

Стиль (начертание) шрифта. Может принимать значение в виде комбинации следующих признаков: f sBold (жирный), f sltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

Для некоторых случаев может оказаться полезным метод procedure Assign(Source : TPersistent);

С помощью этого метода значения свойств шрифтового объекта Source присваиваются свойствам текущего шрифта. Метод можно использовать для создания шрифта принтера по экранному шрифту и наоборот.

В проекте $(S0URCE)\Ch04\TFont\FontDemo.dpr иллюстрируются основные приемы работы со шрифтом. Обработчики события OnClick для кнопок bbFont, bbRun и bbOut показаны далее:

procedure TfmExample.bbFontClick(Sender: TObject); begin if FontDialogl.Execute then pbOut.Canvas.Font := FontDialogl.Font

end;
procedure TfmExample.bbRunClick(Sender: TObject); {Выводит исходный текстf прячет кнопку bbRun и показывает поле edlnput и кнопки bbFont и bbOut } begin
with pbOut.Canvas, Font do begin
TextOut(10, 10, 'MS Sans Serif, Size=10');
Size := 20;
TextOut(10, 30, 'MS Sans Serif, Size=20');
Name := 'Courier'; Style := [fsBold];
TextOut(10, 70, 'Courier, Syze=20');
Name := 'Times New Roman'; Style := [fsltalic, fsUnderLine, fsBold]; TextOut(10, 110, 'Times Nes Roman, курсив, жирный, '+ 'подчерк.');
end;
edlnput.Show;
bbFont.Show;
bbOut.Show;
bbRun.Hide;

lbOutput.Caption 'Выберите шрифт, введите текст и '+ 'нажмите "Вывод"!'

end;
procedure TfmExample.bbOutClick(Sender: TObject); / Выводит текст из поля edlnput текущим шрифтом } begin
if edlnput.Text <>
then
pbOut.Canvas.TextOut(10, 150, edlnput.Text);
edlnput.Text := ''; // Очищаем поле ввода edlnput. SetFocus // Передаем ему фокус ввода end;

t.

Вид окна работающей программы показан на рис. 4.2.

4.4. Графический инструментарий

Рис. 4.2. Вид окна работающей программы

Некоторые пояснения к программе. Мы воспользовались шрифтом канвы компонента PaintBoxl (канва обсуждается в 4.4.4). Для изменения стиля шрифта его свойству Style следует присвоить произвольный набор флагов f sXXXX - значение типа TFontStyle. Этот тип определен как множество из элементов перечисленного типа. Поэтому в правой части оператора присваивания должен быть конструктор множества, даже если устанавливается лишь один флаг:

Style := [fsBold];

Вывод текста реализуется методом TextOut канвы, которому передаются координаты левого верхнего угла надписи и текст.

4.3.2. Класс TStringList || Оглавление || 4.4.2. Класс ТРеп


Искусство создания компонентов Delphi



Новости за месяц

  • Сентябрь
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс