Программирование графики для Windows
Book information
Description
Благодарности Введение О чем эта книга Как организована эта книга Как читать эту книгу Что находится на компакт-диске Что дальше? От издательства Глава 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 От Win32 GDI API к системным функциям механизма GDI Архитектура DirectX Компоненты DirectX Архитектура DirectDraw Архитектура системы печати Клиент спулера Win32 Служба спулера Маршрутизатор спулера Провайдер печати Процессор печати Языковой монитор и монитор порта Процесс спулера изнутри Графический механизм Системные функции графического механизма Механизм графической визуализации Структуры данных графического механизма Преобразование в примитивы Шрифтовые драйверы Драйверы экрана Драйвер видеопорта и мини-драйвер видеопорта Назначение драйвера экрана Инициализация драйвера экрана Вывод на поверхность, перехват и возврат Дополнительные возможности драйвера Поддержка DirectDraw/Direct3D на уровне драйвера экрана Драйверы принтеров Управляющие драйверы принтеров от Microsoft Графическая библиотека DLL драйвера принтера Драйвер принтера для вывода документа HTML Итоги Примеры программ Глава 3. Внутренние структуры данных GDI/DirectDraw Манипуляторы и объектно-ориентированное программирование Класс и объект Инкапсуляция и маскировка реализации Указатели и манипуляторы Тождественное отображение Табличное отображение Когда манипулятора недостаточно Расшифровка манипуляторов объектов GDI Манипуляторы стандартных объектов —константы HGDIOBJ не является указателем Максимальное количество манипуляторов GDI на уровне процесса —12 000 Максимальное количество манипуляторов GDI на уровне системы —16 384 Часть 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. Системы координат и преобразования Физическая система координат Система координат устройства Страничная система координат и режимы отображения Режим отображения MM_TEXT Режимы отображения MM_LOENGLISH и MM_HIENGLISH Режимы отображения MM_LOMETRIC и MM_HIMETRIC Режим отображения MM_TWIPS Режим отображения MM_ISOTROPIC Режим отображения MM_ANISOTROPIC Базовые точки окна и области просмотра Другие функции окна и области просмотра Мировая система координат Аффинные преобразования Функции мировых преобразований в Win32 API Использование мировых преобразований Использование систем координат Реализация преобразований в GDI Пример программы: прокрутка и масштабирование Игра го в классе KScrollCanvas Итоги Примеры программ Глава 7. Пикселы Объекты GDI, манипуляторы и таблица объектов Хранение объектов GDI Таблица объектов GDI Манипулятор объекта GDI API объектов GDI Обнаружение утечки объектов GDI Отсечение Конвейер отсечения Простые регионы Регион отсечения Метарегион Пять регионов контекста устройства Наглядное представление регионов в контексте устройства Цвет Цветовое пространство RGB Цветовое пространство HLS Индексируемые цвета и палитры Нетривиальные возможности Вывод пикселов Пример: множество Мандельброта Итоги Примеры программ Глава 8. Линии и кривые Бинарные растровые операции Режим заполнения фона и цвет фона Перья Объект логического пера Стандартные перья Простые перья Расширенные перья Получение информации о логических перьях Класс для работы с объектами перьев GDI Линии Кривые Безье PolyDraw Альтернативное определение кривых Безье Дуги Определение дуги в градусах: функция AngleArc Рисование дуг пером со стилем PSJNSIDEFRAME Преобразование дуг в кривые Безье Траектории Построение траектории Получение информации о траектории Преобразование объекта траектории Графические операции с использованием траекторий Преобразование пути в регион Пример: рисование нестандартных стилевых линий Итоги Пример программы Глава 9. Замкнутые области Кисти Объект логической кисти Стандартные кисти Пользовательские кисти Кисти системных цветов Структура LOGBRUSH Прямоугольники Прямоугольник как структура данных Рисование прямоугольников Прорисовка границ и элементов управления Эллипсы, секторы, сегменты и закругленные прямоугольники Многоугольники Режим заполнения многоугольников Замкнутые траектории Регионы Создание объекта региона Операции с объектами регионов Прорисовка регионов Градиентные заливки Градиентная заливка прямоугольников Применение градиентных заливок для создания объемных кнопок Практическое использование заливок Полупрозрачная заливка Реализация градиентных заливок в цветовом пространстве HLS Радиальные градиентные заливки Текстурные и растровые заливки Узорные заливки Итоги Пример программы Глава 10. Основные сведения о растрах Аппаратно-независимые растры Файловый формат BMP Упакованный аппаратно-независимый растр Разделенный аппаратно-независимый растр Класс для работы с DIB Отображение DIB в контексте устройства StretchDIBits Исходный прямоугольник Приемный прямоугольник и режимы масштабирования Преобразование цветового формата Растровая операция Пример использования функции StretchDIBits SetDIBitsToDevice Совместимые контексты устройств Аппаратно-зависимые растры CreateBltmap CreateBitmapIndirect GetObject и DDB CreateCompatibleBitmap и CreateDiscardableBitmap CreateDIBitmap LoadBitmap Копирование растров между форматами DIB и DDB Прямой доступ к массиву пикселов DDB Использование DDB-растров Отображение DDB-растров Использование растров в меню Использование растра в качестве фона окна CreateDIBSection Класс для работы с DIB-секциями Функции GetObjectType и GetObject для DIB-секций GetDIBColorTable и SetDIBColorTable Применение DIB-секций: аппаратно-независимый вывод Применение DIB-секций: вывод в высоком разрешении Итоги Примеры программ Глава 11. Нетривиальное использование растров Тернарные растровые операции Коды растровых операций Диаграмма тернарных растровых операций Часто используемые растровые операции Прозрачные растры Функция PlgBIt Кватернарные растровые операции: MaskBIt Цветовые ключи: TransparentBIt Прозрачность без маски Прозрачный вывод с использованием геометрических фигур Прозрачный вывод с использованием отсечения Предварительная подготовка изображений Альфа-наложение Пример альфа-наложения с постоянным коэффициентом Постепенное проявление и исчезновение растров Прозрачные окна Альфа-канал: класс AirBrush Имитация альфа-наложения Итоги Примеры программ Глава 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 Стандартные диалоговые окна печати Создание контекста устройства принтера Получение информации о контексте устройства принтера Последовательность формирования заданий печати Поддержка печати в программах Единая логическая система координат Имитация внешнего вида страницы Одновременный вывод страниц Печать нескольких страниц на одном листе Родовой класс печати Вывод в контексте устройства принтера Единицы измерения Текст Растры Печать графики в формате JPEG Итоги Дополнительная информация Примеры программ Глава 18. DirectDraw и непосредственный режим Direct3D Технология СОМ СОМ-интерфейсы СОМ-классы Создание СОМ-объекта HRESULT DirectX и СОМ Общие сведения о DirectDraw Интерфейс IDirectDraw7 Интерфейс IDirectDrawSurface7 Вывод на поверхности DirectDraw Подбор цветов Интерфейс IDirectDrawClipper Простое окно DirectDraw Построение графической библиотеки DirectDraw Вывод пикселов Вывод линий Заливка замкнутых областей Отсечение Внеэкранные поверхности Поддержка прозрачности посредством цветовых ключей Шрифт и текст Спрайты Непосредственный режим Direct3D Подготовка среды непосредственного режима Direct3D Изменение размеров окна Двухэтапный вывод Использование Direct3D в окне Текстурные поверхности Пример использования непосредственного режима Direct3D Итоги Примеры программ Алфавитный указатель
Similar books
Программирование графики для Windows
2002 · CHM
Программирование графики для Windows
2002 · PDF
Программирование графики для Windows
2002 · ZIP
Программирование графики для Windows
2002 · DJVU
Программирование графики для WINDOWS
2002 · PDF
Оборонная промышленность. Специальное обозрение. Рэнкинг предприятий Российского оборонно-промышленного комплекса в 2001 г. Пухов Р. Корпорации в российском ВПК уже есть. Бендукиндзе К. «Государство должно быть вменяемым заказчиком». Макиенко К. Зачем государству оборонка. Вопрос «Фокуса»: Должны ли предприятия оборонного комплекса участвовать в финансировании гособоронзаказа?. Пядушкин Н. Экспорт - наше главное оружие. Макиенко К. Международное сотрудничество в сфере ВПК сильнее национальных интересов. («Русский фокус», 22 июля - 19 августа 2002. Специальное обозрение «Оборонная промышленность»)
DJVU
Оборонная промышленность. Специальное обозрение. Рэнкинг предприятий Российского оборонно-промышленного комплекса в 2001 г. Пухов Р. Корпорации в российском ВПК уже есть. Бендукиндзе К. «Государство должно быть вменяемым заказчиком». Макиенко К. Зачем государству оборонка. Вопрос «Фокуса»: Должны ли предприятия оборонного комплекса участвовать в финансировании гособоронзаказа?. Пядушкин Н. Экспорт - наше главное оружие. Макиенко К. Международное сотрудничество в сфере ВПК сильнее национальных интересов. («Русский фокус», 22 июля - 19 августа 2002. Специальное обозрение «Оборонная промышленность»)
DJVU
Спасибо Вам! Воспоминания. Письма. Эссе
1998 · DJVU