Графика в проектах Delphi (djvu)

Дмитрий Осипов
Графика в проектах Delphi 8M, 642 с.
издано в 2008 г.
Добавлена: 19.06.2009

Аннотация

В книге Дмитрия Осипова «Графика в проектах Delphi» представлен уникальный материал, посвященный программированию деловой графики для современных версий Windows. Рассмотрены графический механизм системы, функции прикладного интерфейса программирования GDI (Graphics Device Interface), методы работы с графикой средствами визуальной библиотеки Delphi и тонкости современной графической библиотеки Windows GDI+. Обсуждаются особенности управления цветом и вывода текста, рисование примитивов, страничные и мировые преобразования, форматы растровых и векторных
рисунков, организация работы с печатающим устройством, обработка метаданных в современной цифровой фотографии и приемы улучшения качества изображений, цветовая коррекция и многое другое, без чего нельзя создать интерфейс современного программного продукта.
Книгу отличает глубина и ясность изложения материала, поэтому она будет полезна как начинающему программисту, так и профессионалу, который сможет использовать ее как справочник по функциям и методам среды разработки Delphi.

Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
I. Graphics Device Interface (GDI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1. Программирование на Windows API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Дескрипторы, или особенность доступа к объектамWindows. . . . . . . . . . . . . 18
Описание класса главного окна. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Регистрация класса окна. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Создание экземпляра окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Отображение окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Организация цикла обработки сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Оконная процедура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Отправка сообщений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Листинг программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Дочерние окна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Субклассирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2. Контекст графического устройства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Дескриптор контекста для экрана и печатающих устройств . . . . . . . . . . . . . . 40
Контекст окна приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Освобождение дескриптора контекста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Контекст в памяти (совместимый контекст) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Доступ к стандартным объектам контекста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Доступ к текущему объекту контекста. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Информационный контекст . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Восстановление состояния контекста. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Управление объектами GDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Разработка хранителя экрана . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Приложение. Функция GetDeviceCaps() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3. Управление устройствами видеовывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Сбор информации об устройствах видеовывода . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Изменение настроек экрана . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4 Оглавление
4. Кисти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Стандартные кисти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Атрибуты кисти, структура TLogBrush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Создание логической кисти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5. Перья . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Стандартные перья GDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Косметическое перо. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Геометрическое перо . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6. Линии и кривые . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Позиционирование пера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Линии. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Дуги. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Кривые. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7. Простейшие геометрические фигуры и заливка областей . . . . . . . . . .100
Функции определения прямоугольных областей. . . . . . . . . . . . . . . . . . . . . . . .101
Заливка прямоугольной области . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105
Простейшие геометрические фигуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108
Режим заполнения сложной области . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Имитация элементов управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Имитация фокуса ввода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Вывод заголовка окна. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Пассивное состояние элемента управления . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
8. Траектории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Создание траектории. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
Вывод траектории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Преобразование траектории в набор отрезков . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Анализ траектории . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Преобразование траектории в регион . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
9. Регионы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
Создание региона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
Вывод региона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Операции с регионами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Объединение регионов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Преобразование региона в прямоугольный регион . . . . . . . . . . . . . . . . . . . . . .137
Получение информации о регионе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
10. Отсечение и регионы контекста устройства . . . . . . . . . . . . . . . . . . . . . . . . .141
Окно нестандартной формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Обращение к регионам контекста устройства . . . . . . . . . . . . . . . . . . . . . . . . . . .145
Оглавление 5
Определение региона отсечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Проверка вхождения в регион отсечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
Определение метарегиона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149
Перерисовка региона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
11. Системы координат и режимы отображения. . . . . . . . . . . . . . . . . . . . . . . .153
Взаимные преобразования координат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Общие характеристики режимов отображения . . . . . . . . . . . . . . . . . . . . . . . . .157
Настройка страничных координат и координат устройства. . . . . . . . . . . . . .160
Метрические режимы отображения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Пользовательские режимы отображения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166
12. Мировые координаты и аффинные преобразования . . . . . . . . . . . . . . .175
Перевод контекста в мировые координаты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Аффинные преобразования на плоскости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176
Пример «Стрелочные часы». . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182
13. Представление цвета в RGB-модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186
Хранение данных о цвете в памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187
Определение характеристик цвета контекста устройства. . . . . . . . . . . . . . . .189
Макросы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189
Работа с отдельным пикселом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190
Системные цвета. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
Альтернативные цветовые модели. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195
14. Цветовые палитры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Перевод дисплея в 8#битный режим . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197
Структура палитры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
Макросы для работы с палитрой. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
Системная палитра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
Логическая палитра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
Сообщения, связанные с изменением палитры. . . . . . . . . . . . . . . . . . . . . . . . . .206
Поиск цвета в палитре . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
15. Аппаратно-зависимые растры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209
Представление монохромного DDB в памяти. . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Создание DDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Загрузка растра из ресурса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
Универсальная функция отображения битового образа . . . . . . . . . . . . . . . . .218
16. Аппаратно-независимые растры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Формат DIB#растра и файла BMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Отображение DIB#растра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Пример загрузки образа DIB из файла BMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
6 Оглавление
Перенос пикселов между DIB и DDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
DIB#секция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Пример загрузки образа DIB из файла BMP с помощью DIB#секции . . . . .232
17. Растровые операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
Участники растровых операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
Бинарные растровые операции, ROP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Тернарные растровые операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Кватернарные операции, функция MaskBlt. . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Прозрачность. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
18. Расширенный формат метафайла, EMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Структура метафайла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
Загрузка метафайла из файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Создание расширенного метафайла. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
Размещение метафайла в памяти. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Копирование метафайла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Построчное воспроизведение метафайла. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260
Комментарий к метафайлу . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
19. Шрифты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
Набор символов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Ключевые метрики логического шрифта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269
Описание логического шрифта, структура TLogFont . . . . . . . . . . . . . . . . . . . .271
Сбор информации об установленных шрифтах . . . . . . . . . . . . . . . . . . . . . . . . . .271
Доступ к системным шрифтам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Логический шрифт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
Инсталляция и удаление шрифта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
20. Вывод текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
Простейшие приемы вывода текста. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283
Управление выводом текста средствами контекста. . . . . . . . . . . . . . . . . . . . . .286
Приемы форматирования текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289
Дополнительные эффекты при выводе текста . . . . . . . . . . . . . . . . . . . . . . . . . . .294
21. Альфа-наложение и градиентная заливка . . . . . . . . . . . . . . . . . . . . . . . . . .299
Альфа#наложение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Градиентная заливка области . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
II. Графика в VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309
22. Визуальная библиотека компонентов Delphi . . . . . . . . . . . . . . . . . . . . . . . .311
Концепция ООП и опорные классы VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312
Простейшие графические объекты VCL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Оглавление 7
Глобальный объект «экран» – класс TScreen. . . . . . . . . . . . . . . . . . . . . . . . . . . .327
Глобальный объект «монитор» – класс TMonitor. . . . . . . . . . . . . . . . . . . . . . . .329
23. Холст VCL – класс TCanvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
Линии и кривые . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Простейшие геометрические фигуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
Заливка области . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
Вывод текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .338
Работа с холстом в многопоточном режиме . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340
24. Растровые и векторные изображения в VCL . . . . . . . . . . . . . . . . . . . . . . . . .341
Класс TGraphic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341
Иконка – класс TIcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
Растровое изображение – класс TBitmap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345
Метафайл – класс TMetafile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .350
Класс TJPEGImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352
Хранилище изображения – класс TPicture . . . . . . . . . . . . . . . . . . . . . . . . . . . . .354
25. Коллекционируем изображения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356
Контейнер изображений, класс TImageList . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357
Экспорт пиктограмм из контейнера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364
Взаимодействие с элементами управления. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
26. Графические элементы управления VCL. . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
Класс TGraphicControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
Изображение, компонент TImage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Фигура, компонент TShape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .377
Область для рисования, компонент TPaintBox . . . . . . . . . . . . . . . . . . . . . . . . . .378
Разделитель, компонент TSplitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Рельефная панель, компонент TBevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Быстрая кнопка, компонент TSpeedButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . .380
Метка, компонент TLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
27. Организация работы с принтером . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383
Работа с принтером средствами Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384
Технические характеристики принтера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
Описание принтера в Delphi, класс TPrinter . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
Печать многострочного текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391
Печать изображений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392
Окно предварительного просмотра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .393
Преобразование цветного изображения
для печати на монохромном принтере . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .396
Диалог с принтером. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
8 Оглавление
III. GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403
28. Введение в GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405
Мифы и реальность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
Подготовка к работе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
Соглашение об именовании классов GDI+
в проектах Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409
Основной объект – холст GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409
Представление цвета в GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
Структуры определения координат и размеров . . . . . . . . . . . . . . . . . . . . . . . . .413
Отладка проектов GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
29. Кисти GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
Сплошная кисть TGPSolidBrush. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .426
Узорная кисть TGPHatchBrush. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Текстурная кисть TGPTextureBrush. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
Аффинные преобразования кистей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Кисть с линейной градиентной заливкой TGPLinearGradientBrush . . . . . .436
Градиентная кисть сложной формы TGPPathGradientBrush. . . . . . . . . . . . .442
30. Перья GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Создание пера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448
Цвет и толщина пера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .449
Стиль пера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .450
Наконечники пера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .454
Стык линий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457
Расслоение пера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .459
31. Траектории GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461
Траектория, класс TGPGraphicsPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .462
Последовательный просмотр траектории,
класс TGraphicsPathIterator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
32. Регионы GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
Регион, класс TGPRegion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
Холст GDI+ и регион отсечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
33. Графические примитивы и заливка областей в GDI+ . . . . . . . . . . . . . . . .499
Прямые и ломаные линии. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .500
Кривые. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502
Простейшие фигуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .506
Оглавление 9
34. Координатные системы и преобразования в GDI+ . . . . . . . . . . . . . . . . . .510
Страничная система координат в GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511
Мировые координаты, матрица TGPMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . .513
Мировые преобразования, класс TGPGraphics . . . . . . . . . . . . . . . . . . . . . . . . . .528
35. Изображения в GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .530
Кодеры и декодеры изображений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .531
Класс TGPImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .533
Роль хоста при выводе рисунков, метод DrawImage . . . . . . . . . . . . . . . . . . . . .551
36. Метаданные EXIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
Чтение метаданных EXIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .560
Редактирование метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .562
Миниатюра изображения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .563
37. Особенности работы с битовыми образами и метафайлами . . . . . . .566
Битовые образы, класс TGPBitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .567
Метафайл, класс TGPMetafile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .574
38. Работа со шрифтами в GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .588
Шрифт, класс TGPFont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .589
Семейство шрифтов, класс TGPFontFamily . . . . . . . . . . . . . . . . . . . . . . . . . . . . .592
Коллекции шрифтов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .593
39. Операции с текстом в GDI+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .597
Методы TGPGraphics по выводу текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .597
Форматирование текстовой строки, класс TGPStringFormat . . . . . . . . . . . .600
Вывод символа в точной позиции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607
Исследование строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .609
40. Качество вывода и коррекция цвета. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .616
Сглаживание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .616
Порядок наложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .618
Интерполяция растра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .619
Повышение качества вывода текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .621
Сохранение состояния холста GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .623
Коррекция цвета, класс TGPImageAttributes . . . . . . . . . . . . . . . . . . . . . . . . . .




Впечатления о книге:  

Ursus119 про Осипов: Графика в проектах Delphi (Программирование) 19 06
А что не всю книгу в аннотацию поместили?


Прочитавшие эту книги читали:
X