Читаем Delphi. Трюки и эффекты полностью

Цвет текста используется при рисовании изображения каждого символа при помощи функций TextOut и ExtTextOut, а также для преобразования растрового изображения при конвертировании из цветного в монохромный режим.

Мы сделали все необходимые подготовки к выводу текста и теперь просто выводим его с центра нашей формы.

...

TextOut(hCurDC, Width div 2, Height div 2, PAnsiChar(sText), Length(sText));

Но для нас недостаточно обработки лишь события OnPaint. Поэтому поместим на форму таймер и установим интервал его срабатывания равным 100. А в обработчике будем менять атрибуты текста, которые задают угол его наклона при выводе. После чего заставляем сработать обработчик события OnPaint нашей формы посредством вызова функции RePaint (листинг 6.3).

...

Листинг 6.3.

Обработчик события таймера OnTimer

procedure TfmText.TurnTimerTimer(Sender: TObject);

begin

with LogFontData do

begin

lfEscapement := lfEscapement + 60;

lfOrientation := lfEscapement;

end;

RePaint;

end;

Переменная LogFontData объявлена следующим образом:

...

LogFontData: LOGFONT;

На основании ее мы создаем шрифт, которым выводится текст. Здесь мы изменяем только два ее поля, которые влияют на наклон текста при выводе. Все остальные параметры мы единожды заполняем при создании формы. Там же мы активизируем таймер (листинг 6.4).

...

Листинг 6.4.

Обработчик события формы OnCreate

procedure TfmText.FormCreate(Sender: TObject);

begin

with LogFontData do

begin

lfHeight := 30; // высота шрифта

lfWidth := 0; // средняя ширина символа

lfEscapement := 0; // наклон строки относительно оси oX

lfOrientation := 0; // наклон символа

// относительно оси oX

lfWeight := FW_BOLD; // вес шрифта

lfItalic := 0;

lfUnderline := 0;

lfStrikeOut := 0;

// кодовая страница по умолчанию

lfCharSet := DEFAULT_CHARSET;

lfOutPrecision := OUT_DEFAULT_PRECIS; // точность

// вывода

lfClipPrecision := CLIP_DEFAULT_PRECIS; // отсечение

// вывода

lfQuality := PROOF_QUALITY; // качество вывода

lfPitchAndFamily := VARIABLE_PITCH or FF_DONTCARE;

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

lfFaceName := \'Arial\ // название шрифта

end;

TurnTimer.Enabled := True;

end;

Результат работы приложения можно увидеть на рис. 6.2.

Рис. 6.2. Результат работы приложения «Работа с текстом»

<p>6.8. Работа с растровыми изображениями</p>

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

В некоторых случаях вы можете захотеть, чтобы ваше приложение запоминало и хранило изображение только временно. Например, когда вам необходимо промасштабировать его в каком-нибудь приложении для рисования. Для этого необходимо временно запомнить нормальное представление изображения и показать измененное. После того как пользователь опять выберет нормальное представление изображения, приложение будет обязано заменить промасштабированное изображение копией нормального, которое временно сохранено.

Чтобы временно запомнить изображение, вашему приложению необходимо вызвать функцию CreateCompatibleDC, чтобы создать контекст устройства памяти, совместимый с контекстом устройства экрана текущего окна. После этого вы создаете точечный рисунок с соответствующими атрибутами посредством вызова функции CreateCompatibleBitmap, а затем выбираете его в контексте устройства памяти уже известным вам образом.

Перейти на страницу:

Похожие книги

Компьютерные сети. 5-е издание
Компьютерные сети. 5-е издание

Перед вами — очередное, пятое издание самой авторитетной книги по современным сетевым технологиям, написанной признанным экспертом в этой области Эндрю Таненбаумом в соавторстве с профессором Вашингтонского университета Дэвидом Уэзероллом. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером и использовалось в качестве базового учебника в ведущих технических вузах. В книге последовательно изложены основные концепции, определяющие современное состояние и тенденции развития компьютерных сетей. Авторы подробнейшим образом объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до уровня прикладных программ. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования Интернета и компьютерных сетей различного типа. Пятое издание полностью переработано с учетом изменений, происшедших в сфере сетевых технологий за последние годы и, в частности, освещает такие аспекты, как беспроводные сети стандарта 802.12 и 802.16, сети 3G, технология RFID, инфраструктура доставки контента CDN, пиринговые сети, потоковое вещание, интернет-телефония и многое другое.

А. Гребенькова , Джеймс Уэзеролл

Технические науки