Читаем 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, а затем выбираете его в контексте устройства памяти уже известным вам образом.

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

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

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных