Автор: Фень Юань.
2002.
Книга посвящена графическому программированию для Windows с использованием Win32 GDI API. Кроме того, в ней приведены начальные сведения о DirectDraw и краткое введение в непосредственный режим Direct3D. Рассматриваются стандартные возможности, поддерживаемые на всех платформах Win32, 32-разрядные возможности, реализованные только в Windows NT/2000, и новейшие расширения GDI, появившиеся только в Windows 2000 и Windows 98. В книге приведено множество фрагментов кода, подходящих для практического применения. Помимо простейших тестовых и демонстрационных программ, вы найдете в ней множество функций, классов C++, драйверов, утилит и нетривиальных программ, вполне подходящих для использования в коммерческих проектах.
Содержание
Благодарности.
Введение.
О чем эта книга.
Как организована эта книга.
Как читать эту книгу.
Что находится на компакт-диске.
Что дальше?.
От издательства.
Глава 1. Основные принципы и понятия.
Основы программирования для Windows на C/C++.
Hello World, версия 1: запуск браузера.
Hello World, версия 2: вывод текста на рабочем столе.
Hello, World, версия 3: создание полноэкранного окна.
Hello, World, версия 4: вывод средствами DirectDraw.
Ассемблер.
Среда программирования.
Разработка и тестирование.
Компиляторы.
Microsoft Platform SDK.
Microsoft Driver Development Kit.
Microsoft Developer Network.
Формат исполняемых файлов Win32.
Каталог импорта.
Каталог экспорта.
Архитектура операционной системы Microsoft Windows.
HAL.
Микроядро.
Драйверы устройств.
Управление окнами и графическая система.
Исполнительная часть.
Системные функции.
Системные процессы.
Службы.
Платформенные подсистемы.
Итоги.
Примеры программ.
Глава 2. Архитектура графической системы Windows.
Компоненты графической системы Windows.
Мультимедиа.
Video for Windows.
Still Image.
OpenGL .
Windows Media.
Компоненты режима ядра.
Драйверы режима ядра.
Архитектура GDI.
Функции, экспортируемые из GDI32.DLL.
Группы функций GDI.
Вызовы системных функций GDI.
От Win32GDIAPlк системным функциям механизма GDI.
Архитектура DirectX.
Компоненты DirectX.
Архитектура DirectDraw.
Архитектура системы печати.
Клиент спулера Win32.
Служба спулера.
Маршрутизатор спулера.
Провайдер печати.
Процессор печати.
Языковой монитор и монитор порта.
Процесс спулера изнутри.
Графический механизм
Системные функции графического механизма.
Механизм графической визуализации.
Структуры данных графического механизма.
Преобразование в примитивы.
Шрифтовые драйверы.
Драйверы экрана.
Драйвер видеопорта и мини-драйвер видеопорта.
Назначение драйвера экрана.
Инициализация драйвера экрана.
Вывод на поверхность, перехват и возврат.
Дополнительные возможности драйвера.
Поддержка DirectDraw/Direct3D на уровне драйвера экрана.
Драйверы принтеров.
Управляющие драйверы принтеров от Microsoft
Графическая библиотека DLL драйвера принтера. Драйвер принтера для вывода документа HTML
Итоги.
Примеры программ.
Глава 3. Внутренние структуры данных GDI/DirectDraw
Манипуляторы и объектно-ориентированное программирование.
Класс и объект.
Инкапсуляция и маскировка реализации.
Указатели и манипуляторы.
Тождественное отображение.
Табличное отображение.
Когда манипулятора недостаточно.
Расшифровка манипуляторов объектов GDI.
Манипуляторы стандартных объектов - константы.
HGDIOBJ не является указателем.
Максимальное количество манипуляторов GDI
на уровне процесса-12 000.
Максимальное количество манипуляторов
на уровне системы-16
Часть HGDIOBJ содержит индекс.
Часть HGDIOBJ содержит тип объекта GDI.
Поиск таблицы объектов GDI.
Расшифровка таблицы объектов GDI.
Указатель pKernel ссылается на выгружаемый пул.
Поле nCount иногда используется как счетчик выбора объектов.
Поле nProcess связывает манипулятор GDI с конкретным процессом
nUpper: дополнительная проверка.
пТуре: внутренний тип объекта.
pUser: указатель на структуру данных пользовательского режима.
Структуры данных пользовательского режима.
Структура данных пользовательского режима для кистей: оптимизация создания однородных кистей.
Структура данных пользовательского режима для регионов: оптимизация прямоугольных регионов.
Структура данных пользовательского режима для шрифтов: таблица значений ширины.
Структура данных пользовательского режима для контекста устройства: атрибуты
Обращение к адресному пространству режима ядра.
WinDbg и расширение отладчика GDI.
Структуры данных режима ядра.
Таблица объектов GDI в механизме GDI.
Типы объектов GDI в механизме GDI.
Контекст устройства в механизме GDI.
Структура PDEV в механизме GDI.
Поверхности в механизме GDI.
Аппаратно-зависимые растры в механизме GDI.
DIB-секции в механизме GDI.
Кисти в механизме GDI.
Перья в механизме GDI.
Палитры в механизме GDI.
Регионы в механизме GDI.
Траектории в механизме GDI.
Шрифты в механизме GDI.
Другие объекты GDI в механизме GDI.
Структуры данных DirectDraw.
Итоги.
Примеры программ.
Глава 4. Мониторинг графической системы Windows.
Отслеживание вызовов функций Win32 API.
Построение программы мониторинга.
Внедрение DLL-разведчика.
Подключение к цепочке вызовов функций API.
Сбор информации.
Вывод данных .
Управляющая программа.
Отслеживание вызовов Win32 GDI.
Файл определения GDI API.
Декодер данных GDI.
Полный мониторинг API.
Отслеживание СОМ-интерфейсов DirectDraw.
Таблица виртуальных функций.
Определение DirectDraw API.
Модификация таблицы виртуальных функций.
Отслеживание системных вызовов GDI.
Отслеживание интерфейса DDI.
Итоги.
Примеры программ
Глава 5. Абстракция графического устройства.
Современные видеоадаптеры.
Кадровый буфер.
Формат пикселов.
Двойная буферизация, z-буфер и текстуры.
Аппаратное ускорение.
Экранное устройство и перечисление режимов.
Контекст устройства.
Создание контекста устройства.
Получение информации о возможностях устройства.
Атрибуты в контексте устройства.
Связь контекста устройства с окном.
Графический вывод в многооконной среде.
Получение контекста устройства, связанного с окном.
Общий контекст устройства.
Классовый контекст устройства.
Закрытый контекст устройства.
Родительский контекст устройства.
Прочие контексты устройств.
Информационный контекст устройства.
Совместимый контекст устройства.
Метафайловый контекст устройства.
Формальное представление контекста устройства.
Пример: родовой класс рамочного окна.
Класс панели инструментов.
Класс строки состояния.
Класс холста.
Класс рамочного окна.
Тестовая программа.
Пример программы: графический вывод в контексте устройства.
Обновляемый регион окна.
Сообщение WM_PAINT.
Наглядное представление сообщений перерисовки окна.
Итоги.
Примеры программ.
Глава 6. Системы координат и преобразования.
Физическая система координат.
Система координат устройства.
Страничная система координат и режимы отображения.
Режим отображения ММ_ТЕХТ.
Режимы отображения MMJ.OENGLISH и MMJHIENGLISH
Режимы отображения MM.LOMETRIC и MMJHIMETRIC
Режим отображения MM_TWIPS.
Режим отображения MMJSOTROPIC.
Режим отображения MM.ANISOTROPIC.
Базовые точки окна и области просмотра.
Другие функции окна и области просмотра.
Мировая система координат.
Аффинные преобразования.
Функции мировых преобразований в Win32 API.
Использование мировых преобразований.
Использование систем координат.
Реализация преобразований в GDI.
Пример программы: прокрутка и масштабирование.
Игра го в классе KScrollCanvas.
Итоги.
Примеры программ.
Глава 8. Линии и кривые.
Бинарные растровые операции.
Режим заполнения фона и цвет фона.
Перья.
Объект логического пера.
Стандартные перья.
Простые перья.
Расширенные перья.
Получение информации о логических перьях.
Класс для работы с объектами перьев GDI.
Линии.
Кривые Безье.
PolyDraw.
Альтернативное определение кривых Безье.
Дуги.
Определение дуги в градусах: функция AngleArc.
Рисование дуг пером со стилем PSJNSIDEFRAME.
Преобразование дуг в кривые Безье.
Траектории.
Построение траектории.
Получение информации о траектории.
Преобразование объекта траектории
Графические операции с использованием траекторий.
Преобразование пути в регион.
Пример: рисование нестандартных стилевых линий.
Итоги.
Пример программы.
Глава 9. Замкнутые области.
Кисти.
Объект логической кисти.
Стандартные кисти
Пользовательские кисти.
Кисти системных цветов.
Структура L0GBRUSK.
Прямоугольники.
Прямоугольник как структура данных.
Рисование прямоугольников.
Прорисовка границ и элементов управления.
Эллипсы, секторы, сегменты и закругленные прямоугольники.
Многоугольники.
Режим заполнения многоугольников.
Замкнутые траектории.
Регионы.
Создание объекта региона.
Операции с объектами регионов.
Прорисовка регионов.
Градиентные заливки.
Градиентная заливка прямоугольников.
Применение градиентных заливок для создания объемных кнопок Практическое использование заливок.
Полупрозрачная заливка.
Реализация градиентных заливок в цветовом пространстве HLS.
Радиальные градиентные заливки.
Текстурные и растровые заливки.
Узорные заливки Итоги.
Пример программы.
Глава 10. Основные сведения о растрах
Аппаратно-независимые растры.
Файловый формат BMP.
Упакованный аппаратно-независимый растр.
Разделенный аппаратно-независимый растр.
Класс для работы с DIB.
Отображение DIB в контексте устройства.
StretchDIBits.
Исходный прямоугольник.
Приемный прямоугольник и режимы масштабирования.
Преобразование цветового формата.
Растровая операция.
Пример использования функции StretchDIBits.
SetDIBitsToDevice.
Совместимые контексты устройств.
Аппаратно-зависимые растры.
CreateBitmap.
CreateBitmapIndirect
GetObjectи DDB.
CreateCompatibleBitmapMCreateDiscardableBitmap
CreateDIBitmap.
LoadBitmap.
Копирование растров между форматами DIB и DDB.
Прямой доступ к массиву пикселов DDB.
Использование DDB-расгров.
Отображение DDB-расгров.
Использование растров в меню.
Использование растра в качестве фона окна.
CreateDIBSection.
Класс для работы С DIB-секциями.
Функции GetObjectType и GetObjectдл я DIB-секций
GetDIBColorTable и SetDIBColorTable.
Применение DIB-секций: аппаратно-независимый вывод
Применение DIB-секций: вывод в высоком разрешении.
Итоги.
Примеры программ.
Глава 11. Нетривиальное использование растров.
Тернарные растровые операции.
Коды растровых операций.
Диаграмма тернарных растровых операций.
Часто используемые растровые операции.
Прозрачные растры.
Функция PlgBIt.
Кватернарные растровые операции :MaskBlt.
Цветовые ключи: TransparentBIt.
Прозрачность без маски.
Прозрачный вывод с использованием геометрических фигур.
Прозрачный вывод с использованием отсечения.
Предварительная подготовка изображений.
Альфа-наложение.
Пример альфа-наложения с постоянным коэффициентом.
Постепенное проявление и исчезновение растров.
Прозрачные окна.
Альфа-канал: KnacCAirBrush.
Имитация альфа-наложения.
Итоги.
Примеры программ.
Глава 12. Графические алгоритмы и растры Windows
Прямой доступ к пикселам.
Аффинные преобразования растров.
Быстрые специализированные преобразования растров.
Преобразования цветов.
Преобразование растров в оттенки серого.
Гамма-коррекция.
Преобразование пикселов в растрах
Родовой класс преобразований пикселов.
Родовой класс цветоделения.
Пример выделения каналов.
Гистограмма.
Пространственные фильтры.
Фильтры сглаживания и резкости.
Выделение границ и рельеф.
Морфологические фильтры.
Итоги.
Примеры программ.
Глава 13. Палитры
Системная палитра.
Параметры экрана.
Получение системной палитры.
Статические цвета
Логическая палитра.
Палитра по умолчанию.
Полутоновая палитра
Создание специализированной палитры.
Сообщения палитры.
WM_QUERYNEWPALETTE.
WM.PALETTEISCHANGING.
WM_PALETTECHANGED.
Тестовая программа.
Палитра и растры.
Аппаратно-зависимые растры и палитры.
Аппаратно-независимые растры и палитры.
Индекс палитры в цветовой таблице DIB.
DIB-секций и палитра
Квантование цветов.
Сокращение цветовой глубины растра.
Пример программы.
Глава 14. Шрифты
Что такое шрифт?.
Наборы символов и кодировки.
Глифы.
Шрифт.
Семейство шрифтов и начертание.
Растровые шрифты.
Векторные шрифты.
Шрифты TrueType.
Формат файлов шрифтов TrueType.
Заголовок шрифта.
Максимальный профиль.
Отображение символов в индексы глифов.
Индексная таблица.
Данные глифов.
Инструкции глифа.
Горизонтальные метрики.
Кернинг.
Метрики OS/2 и Windows.
Другие таблицы.
Коллекции TrueType.
Установка и внедрение шрифтов.
Ресурсные файлы шрифтов.
Установка открытых шрифтов.
Установка закрытых шрифтов и шрифтов Multiple Master OpenType.
Установка шрифтов из образа в памяти.
Внедрение шрифтов.
Системная таблица шрифтов.
Итоги.
Примеры программ.
Глава 15. Текст
Логические шрифты.
Метрики шрифтов в Windows.
Стандартные шрифты.
Создание логических шрифтов.
Подстановка шрифта.
Система подстановки шрифтов PANOSE.
Получение информации о логическом шрифте.
Метрики растровых и векторных шрифтов.
Метрики шрифтов TrueType/OpenType
Структура LOGFONTи метрики шрифта.
Точность шрифтовых метрик.
Простой вывод текста.
Выравнивание текста.
Вывод текста справа налево.
Дополнительные интервалы.
Ширина символа.
Нетривиальный вывод текста.
Преобразование символов в глифы.
Кернинг.
Расположение символов.
Функция ExtTextOut.
Uniscribe.
Доступ к данным глифов.
Форматирование текста.
Вывод текста с табуляцией.
Простое абзацное форматирование.
Аппаратно-независимоеформатирование текста Эффекты при выводе текста.
Цветтекста.
Начертания.
Геометрические эффекты.
Работа с текстом в растровом формате.
Текст как совокупность кривых.
Текст как регион.
Итоги.
Пример программы.
Глава 16. Метафайлы.
Общие сведения о метафайлах.
Создание расширенного метафайла.
Воспроизведение расширенного метафайла.
Получение информации о расширенном метафайле.
Передача расширенных метафайлов.
Строение расширенных метафайлов.
Записи EMF.
Классификация типов записей EMF.
Расшифровка записей EMF.
Простые объекты GDI в EMF.
Растры в EMF.
Регионы в EMF.
Траектории в EMF.
Палитры в EMF.
Системы координат в EMF.
Команды вывода в EMF
Аппаратная независимость EMF Перечисление записей EMF.
Класс C++ для перечисления записей EMF
Замедленное воспроизведение EMF
Трассировка воспроизведения EMF
Динамическое изменение EMF.
Построение производных метафайлов EMF как средство программирования
Декомпилятор EMF.
Сохранение EMF-файла спулера Итоги.
Дополнительная информация.
Примеры программ.
Глава 17. Печать.
Знакомство со спулером.
Процесс печати.
Язык управления принтером.
Прямой вывод в порт.
Печать с использованием спулера.
Процессор печати EMF.
Перечисление принтеров.
Получение информации о принтере.
Настройка драйвера принтера Базовая печать средствами GDI
Стандартные диалоговые окна печати
Создание контекста устройства принтера
Получение информации о контексте устройства принтера
Последовательность формирования заданий печати Поддержка печати в программах
Единая логическая система координат
Имитация внешнего вида
Одновременный вывод
Печать нескольких страниц на одном листе.
Родовой класс печати.
Вывод в контексте устройства принтера.
Единицы измерения.
Текст.
Исполнительная часть.
Microsoft определяет исполнительную часть (Executive) Windows NT/2000 как совокупность компонентов режима ядра, образующих базовую операционную систему Windows NT/Windows 2000. Помимо HAL, микроядра и драйверов устройств, в исполнительную часть также входят компоненты исполнительной поддержки, диспетчера памяти, диспетчера кэша, структуры процессов, межпроцессных взаимодействий (LPC и RPC), диспетчера объектов, диспетчера ввода-вывода, диспетчера конфигурации и монитора безопасности.
Каждый компонент исполнительной части поддерживает набор системных функций, которые могут вызываться из пользовательского режима (кроме диспетчера кэша и HAL) при помощи прерываний. Кроме того, каждый компонент предоставляет точку входа, доступную только для модулей, работающих в адресном пространстве ядра.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование графики для Windows - Фень Юань - fileskachat.com, быстрое и бесплатное скачивание.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать книгу - Программирование графики для Windows - Фень Юань. - depositfiles
Скачать книгу - Программирование графики для Windows - Фень Юань. - letitbit
Дата публикации:
Теги: книга по программированию :: графика windows :: Фень Юань
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Стандартизация разработки программных средств - Благодатских В.А., Волнин В.А., Поскакалов К.Ф.
- Приемы ООП, паттерны проектирования, Гамма, Хелм, Джонсон
- Приемы объектно - ориентированного проектирования - Паттерны проектирования - Гамма Э., Хелм Р., Джонсон Р.
- Программирование в среде Visual Basic for Applications - Демидова Л.А., Пылькин А.Н.
Предыдущие статьи:
- Наиболее эффективное использование C++ - 35 новых рекомендаций по улучшению ваших программ и проектов - Мейерс С.
- C++Builder 6, справочное пособие, книга 2, Классы и компоненты - Архангельский А.Я.
- C++Builder 6, справочное пособие, книга 1, Язык С++ - Архангельский А.Я.
- C++ Библиотека программиста - Джефф Элджер