11. Растровые изображения. Вывод растровых изображений. Значки и курсоры. Вывод растровых изображений с эффектом прозрачного фона.
Растровое изображение — представляет собой сетку пикселей или точек цветов (обычно прямоугольную) на компьютерном мониторе, бумаге и других отображающих устройствах и материалах. Важными характеристиками изображения являются:
разрешение. Может указываться отдельно количество пикселов по ширине и высоте (1024*768, 640*480,...) или же, редко, общее количество пикселов (часто измеряется в мегапикселах);
количество используемых цветов или глубина цвета
цветовое пространство (цветовая модель) RGB, CMYK, XYZ, YCbCr и др.
Отрисовка изображения может быть выполнена с использованием функции StretchDIBits() (функция StretchDIBits копирует данные для прямоугольной области пикселов формата DIB в область адресата отображения формата DDB, полученное таким образом изображение DDB может быть выбрано в контекст памяти и нарисовано обычным способом при помощи функции BitBlt() или StretchBlt()) или с использованием функции StretchDIBits() (эта функция сама выполняет необходимые преобразования).
Вывод растровых изображений с эффектом прозрачного фона
Теперь растр с прозрачностью можно вывести за один прием с помощью функции TransparentBlt, указав прозрачный цвет в последнем параметре функции:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap *temp = memDC.SelectObject(m_Bmp);
TransparentBlt(pDC->m_hDC, x, y, dstX, dstY, memDC.m_hDC,
x1, y1, srcX, srcY, RGB(255,255,255));
memDC.SelectObject(temp);
В данном примере x, y, x1, y1 - координаты начальной точки растра в приемнике и источнике соответственно. Параметры dstX и dstY - размеры области вывода, а srcX и srcY - ширина и высота прямоугольника, отображаемого из растра.
Эта функция содержит возможности по сжатию/растяжению растровых изображений. Добавим, что функция TransparentBlt() при выводе опирается на возможности DirectX данного устройства, что может дать прирост производительности по сравнению с традиционными методами.
Значки (Пикторграммы) — это небольшие растровые изображения, применяемые Windows для визуального представления приложений, файлов и каталогов. Пиктограмма, включенная в состав приложения, выводится на экран в левом верхнем углу строки заголовка окна приложения. Кроме того, Windows выводит на экран значок пиктограммы в списке программ меню Start (Пуск), на панели задач, когда окно приложения свернуто, и в списке файлов, отображаемых программой Windows Explorer в открытой папке. Также пиктограммы отображаются на рабочем столе, предоставляя доступ к системным папкам и к ярлыкам исполняемых файлов. Обычно малые и стандартные пиктограммы являются 16-цветными, а большие пиктограммы могут использовать 256 цветов.
Курсоры — это изображения размером 32 х 32 пиксела, которые отмечают положение курсора (указателя) мыши. Курсоры во многом похожи на пиктограммы. Их главное отличие заключается в наличии активной точки (hotspot). Активной точкой называется пиксел, который принадлежит изображению курсора и отмечает его точное положение на экране в любой момент времени. В стандартном курсоре, имеющем вид стрелки, активная точка расположена в левом верхнем углу курсора.
- Модель программного интерфейса ос windows. Понятие объекта ядра и описателя объекта ядра операционной системы Windows. Нотация программного интерфейса.
- Понятие пользовательского режима и режима ядра операционной системы Windows. Модель виртуальной памяти процесса в пользовательском режиме и в режиме ядра операционной системы Windows.
- Обзор архитектуры и основных модулей операционной системы Windows.
- Системный реестр операционной системы Windows.
- 5. Основные элементы программ с оконным пользовательским интерфейсом. Минимальная программа для ос Windows с окном на экране. Создание и отображение окна.
- Понятие оконного сообщения. Источники сообщений. Очередь сообщений. Цикл приема и обработки сообщений. Процедура обработки сообщений.
- 8. Вывод информации в окно. Механизм перерисовки окна.
- 9. Принципы построения графической подсистемы ос Windows. Понятие контекста устройства. Вывод графической информации на физическое устройство.
- 10. Рисование геометрических фигур. Графические инструменты. Управление цветом. Палитры цветов.
- 11. Растровые изображения. Вывод растровых изображений. Значки и курсоры. Вывод растровых изображений с эффектом прозрачного фона.
- 12. Вывод текста. Логические и физические шрифты.
- 13. Системы координат. Трансформации. Режимы масштабирования.
- 14. Понятие ресурсов программ. Виды ресурсов. Работа с ресурсами. Меню. Окна диалога.
- 15. Понятие динамически подключаемой библиотеки. Структура dll-библиотеки. Создание dll-библиотеки. Использование dll-библиотеки в программе. Статический и динамический импорт.
- 16. Отображение файлов в память.
- 17. Организация многозадачности в операционной системе Windows. Понятие процесса и потока. Контекст потока. Создание и завершение процессов и потоков.
- 18. Механизм приоритетов в операционной системе Windows. Класс приоритета процесса. Относительный приоритет потока. Базовый и динамический приоритеты потока.
- 19. Синхронизация потоков в пределах одного процесса. Критические секции. Спин-блокировки. Interlocked-функции.
- 20. Синхронизация потоков разных процессов. Объекты синхронизации: флаги, семафоры, события, ожидаемые таймеры, именованные и неименованные «трубы» (каналы).
- 21. Синхронизация потоков при создании общих данных с помощью двойных проверок (double-checked locking).
- 22. Синхронизация потоков с помощью мониторов Хоара.
- 24. Структуры данных общего назначения в режиме ядра. Представление строк стандарта Unicode. Представление двусвязных списков.
- 25. Понятие прерывания, исключения и системного вызова.
- 26. Аппаратные и программные прерывания. Таблица обработчиков прерываний. Понятие процедуры обработки прерываний (isr).
- 27. Программируемый контролер прерываний. Уровни прерываний. Механизм вызова прерываний. Функция KeBugCheckEx.
- 28. Исключения. Механизм обработки исключения.
- 29. Системные вызовы. Выполнение системного вызова.
- 30. Понятие отложенной процедуры (dpc). Назначение отложенных процедур.
- 31. Понятие асинхронной процедуры (apc). Назначение асинхронных процедур. Асинхронные процедуры режима ядра и пользовательского режима.
- 32. Понятие рабочего элемента ядра (Work Item). Назначение рабочих элементов.
- 33. Пулы памяти. Пул подкачиваемой памяти, пул неподкачиваемой памяти, пул сессии, особый пул. Тегирование пулов. Структура данных пула.
- 34. Оптимизация использования оперативной памяти с помощью списков предыстории (look-aside lists).
- 35. Блокирование страниц в памяти. Списки описателей памяти (mdl) и их использование
- 36. Представление объекта ядра в памяти. Менеджер объектов.
- 37. Структура драйвера операционной системы Windows. Точки входа в драйвер.
- 38. Объект, описывающий драйвер. Объект, описывающий устройство. Объект, описывающий файл. Взаимосвязь объектов.
- 39. Запрос ввода-вывода (irp). Схема выполнения ввода-вывода в стеке драйверов.
- 40. Структура api ядра ос Windows: Kernel api, Windowing api, Messaging api. Функции ZwXxx/NtXxx в пользовательском режиме и в режиме ядра.
- 42. Перехват функций ос Windows api в пользовательском режиме. Интерфейсный модуль ntdll.Dll.
- 43. Перехват вызова функций ос Windows в режиме ядра. Встроенная защита от перехвата в новейших версиях ос Windows.