Валерий Борисок - Delphi. Трюки и эффекты

Тут можно читать онлайн Валерий Борисок - Delphi. Трюки и эффекты - бесплатно ознакомительный отрывок. Жанр: Программы. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Delphi. Трюки и эффекты
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валерий Борисок - Delphi. Трюки и эффекты краткое содержание

Delphi. Трюки и эффекты - описание и краткое содержание, автор Валерий Борисок, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Delphi. Трюки и эффекты - читать онлайн бесплатно ознакомительный отрывок

Delphi. Трюки и эффекты - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Валерий Борисок
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
...

Листинг 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. Результат работы приложения «Работа с текстом»

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

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

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

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

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

Следующий пример демонстрирует, как можно получать изображения всего Рабочего стола, а также как полученное изображение можно масштабировать. В данном приложении мы будем обрабатывать три события формы: OnCreate, OnPaint, OnClose, а также одно событие кнопки Onclick.

Рассмотрим исходный код обработчика события OnCreate (листинг 6.5).

...

Листинг 6.5. Обработчик события OnCreate

procedure TfmCaptureImage.FormCreate(Sender: TObject);

begin

//создаем контекст устройства экрана

hdcScreen := CreateDC(\'DISPLAY\', nil, nil, nil);

//создаем совместимый контекст устройства памяти

hdcCompatible := CreateCompatibleDC(hdcScreen);

bmpWidth := GetDeviceCaps(hdcScreen, HORZRES);

bmpHeight := GetDeviceCaps(hdcScreen, VERTRES);

//создаем совместимый точечный рисунок для hdcScreen

hbmScreen := CreateCompatibleBitmap(hdcScreen, bmpWidth,

bmpHeight);

if hbmScreen <> 0 then

hOldBitmap := SelectObject(hdcCompatible, hbmScreen)

else

hOldBitmap := 0;

Captured := False;

end;

Здесь происходит создание контекста устройства Рабочего стола посредством вызова функции CreateDC.

...

hdcScreen:= CreateDC(\'DISPLAY\', nil, nil, nil);

После этого создается совместимый контекст устройства памяти для только что основанного контекста. Затем создается совместимый точечный рисунок.

...

bmpWidth := GetDeviceCaps(hdcScreen, HORZRES);

bmpHeight := GetDeviceCaps(hdcScreen, VERTRES);

//создаем совместимый точечный рисунок для hdcScreen

hbmScreen := CreateCompatibleBitmap(hdcScreen, bmpWidth, bmpHeight);

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

...

hdcScreen, hdcCompatible: HDC;

hbmScreen, hOldBitmap: HBITMAP;

bmpWidth, bmpHeight: Integer;

Captured: LongBool;

Рассмотрим исходный код обработчика события OnPaint (листинг 6.6).

...

Листинг 6.6.

Обработчик события OnPaint

procedure TfmCaptureImage.FormPaint(Sender: TObject);

var

hCurDC: HDC;

begin

if Captured then

begin

hCurDC := GetDC(Handle);

StretchBlt(hCurDC, 0, 0, Width, Height, hdcCompatible,

0, 0, bmpWidth, bmpHeight, SRCCOPY);

ReleaseDC(Handle, hCurDC);

end;

end;

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

Перед закрытием формы мы должны освободить занятые нами ресурсы системы. Поэтому мы обрабатываем событие OnClose, исходный код обработчика которого приведен ниже (листинг 6.7).

...

Листинг 6.7.

Обработчик события OnClose

procedure TfmCaptureImage.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

//восстанавливаем точечный рисунок по умолчанию

if hOldBitmap <> 0 then

SelectObject(hdcCompatible, hOldBitmap);

//удаляем совместимый точечный рисунок

if hbmScreen <> 0 then

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валерий Борисок читать все книги автора по порядку

Валерий Борисок - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Delphi. Трюки и эффекты отзывы


Отзывы читателей о книге Delphi. Трюки и эффекты, автор: Валерий Борисок. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x