
- •Глава 9 Значки, курсоры, битовые образы и строки
- •Компиляция ресурсов
- •Значки и курсоры
- •Редактор изображений
- •Получение описателя значков
- •Использование значков в вашей программе
- •Использование альтернативных курсоров
- •Битовые образы: картинки в пикселях
- •Использование битовых образов и кистей
- •Символьные строки
- •Использование ресурсов-символьных строк
- •Использование ресурсов-строк в функции MessageBox
- •Ресурсы, определяемые пользователем
Редактор изображений
Программу-инструмент, которую вы используете для создания значков, курсоров и битовых образов часто называют редактором изображений (image editor), и он является одной из наиболее важных утилит разработчика в любой интегрированной среде разработки программ для Windows. Как значки, так и курсоры являются разновидностью битовых образов, поэтому будет полезно рассмотреть битовые образы первыми.
Битовый образ (bitmap) — это битовый массив, где один или более битов соответствуют каждому пикселю экрана. В монохромном битовом образе для каждого пикселя требуется один бит. (В простейшем случае 1 соответствует белому цвету, а 0 — черному. Тем не менее, битовые образы часто используются не только для создания простых рисунков, но и в логических операциях.) В цветном битовом образе для отображения цвета каждому пикселю соответствует несколько битов. Редакторы изображений обычно поддерживают создание монохромных и 16-цветных битовых образов. В 16-цветном битовом образе для каждого пикселя требуется 4 бита.
Битовый образ может иметь любое число строк и столбцов, но в некоторых редакторах изображений предельный размер образа, с которым они работают, может быть ограничен. Битовые образы хранятся в файлах с расширением .BMP. Вы тоже можете создавать значки и курсоры с помощью редактора изображений.
Теоретически, Windows выводит значки и курсоры на экран в пиксельном размере, который зависит от разрешающей способности дисплея. Это гарантирует, что они не будут ни слишком большими, ни слишком маленькими. Однако, подходящие для подавляющего большинства видеоадаптеров VGA (Video Graphics Array), с разрешением экрана 640 пикселей по горизонтали и 480 по вертикали, размеры значков и курсоров изменяются не совсем так, как требуется.
В Windows 95 имеется два размера значков — стандартный и маленький. На дисплеях VGA стандартный значок имеет размер 32 пикселя в ширину и 32 пикселя в высоту, а площадь маленького значка равна 16 квадратных пикселей. Маленький значок используется в левой части строки заголовка приложения для вызова системного меню, в панели задач системы в нижней части экрана, а также в списках программ меню Start. Значки, появляющиеся на рабочем столе, имеют стандартный размер. В программе Windows Explorer и меню Start пользователь может произвольно выбирать стандартный или маленький значок.
В программе можно получить горизонтальный (X) и вертикальный (Y) размеры значков и курсоров, используя функцию GetSystemMetrics с параметрами SM_CXICON и SM_CYICON (для стандартного значка), SM_CXSMICON и SM_CYSMICON (для маленького значка) и SM_CXCURSOR и SM_CYCURSOR для курсоров мыши. Для большинства дисплеев размеры стандартных курсоров и значков одинаковы.
Редактор изображений, включенный в состав программы Developer Studio, может создавать файл с расширением .ICO, содержащий один из трех различных образов значка:
Стандартный: 16-цветный площадью 32 квадратных пикселя
Монохромный: черно-белый площадью 32 квадратных пикселя
Маленький: 16-цветный площадью 16 квадратных пикселей
Все курсоры и значки, показанные в программах этой главы, являются монохромными. Вам нет необходимости создавать значки во всех трех форматах. Сама Windows может создать из стандартного значка — маленький, просто исключив каждый второй столбец и строку. Для монохромных дисплеев (которые сейчас почти полностью устарели) Windows может приближенно изобразить значок, используя различные оттенки серого цвета.
Когда вы создаете образ значка в одном из трех представленных форматов, редактор изображений, фактически, сохраняет его в виде двух битовых образов — монохромной маски (mask) битового образа и монохромного или цветного изображения битового образа. Значки всегда прямоугольны, но маска позволяет значку представлять непрямоугольные изображения, т. е. вместо изображения всего значка, некоторые его части могут быть окрашены на экране цветом фона. Кроме этого значки могут содержать области, инвертирующие цвет фона. В следующей таблице показано, как редактор изображений строит два битовых образа, которые описывают монохромный значок:
Цвет: |
Черный |
Белый |
Экран |
Инверсный экран |
Маска битового образа: |
0 |
0 |
1 |
1 |
Изображение битового образа: |
0 |
1 |
0 |
1 |
При выводе значка на экран, Windows сначала использует поразрядную операцию AND экрана и первого битового образа. Пиксели экрана, соответствующие нулевым битам первого битового образа становятся нулевыми, т. е. черными. Пиксели экрана, соответствующие единичным битам остаются без изменения. Эта логика отражена в следующей таблице:
Б |
Пиксели экрана 0 1 |
0 |
0 0 |
1 |
0 1 |
Далее, Windows выполняет поразрядную операцию исключающего OR изображения битового образа и экрана. 0 во втором битовом образе оставляет пиксель на экране без изменений; 1 во втором битовом образе инвертирует пиксель экрана. Эта логика представлена в следующей таблице:
Б ит изображения |
Пиксели экрана 0 1 |
0 |
0 1 |
1 |
1 0 |
Используя нотацию языка C для этих операций, вывод на экран осуществляется в соответствии со следующей формулой:
Display = (Display & Mask) ^ Image
Для 16-цветного значка маска битового образа — монохромна и формируется указанным выше способом. Битовый образ изображения содержит 4 бита на пиксель для отображения 16 цветов. Все четыре бита устанавливаются в 1 для той области значка, в которой цвет фона инвертируется.
Раньше при обсуждении битовых образов говорилось, что 0 необязательно означает черный цвет, а 1 необязательно означает белый. Как вы можете теперь видеть, это зависит от того, как Windows использует битовые образы.
В программе RESOURC1 мы определили класс окна так, чтобы фон рабочей области был COLOR_WINDOW. Вы можете изменить цвет окна с помощью программы Control Panel, чтобы увидеть, как меняются цвета значка и курсора.