Не меняется, т. е. перо
Таблица 7
Режим рисования | Формула | Цвет пиксела |
R2_COPYPEN | P | Соответствует (равен) цвету пера |
R2_BLACK | 0 | Черный |
R2_WHITE | 1 | Белый |
R2_NOP | D | Не меняется, т. е. перо ничего не рисует |
R2_NOT | ~D | Получается инвертированием цвета подложки, т. е. цвета пиксела до рисования |
R2_NOTCOPYPEN | ~P | Получается инвертированием цвета пера |
R2_MASKPEN | P&D | Комбинация компонент цветов, имеющихся как в цвете подложки, так и в цвете пера |
R2_NOTMASKPEN | ~(P&D) | Инверсия предыдущего значения |
R2_MERGEPEN | P|D | Комбинация компонент цветов подложки и пера |
R2_NOTMERGEPEN | ~(P|D) | Инверсия предыдущего значения |
R2_XORPEN | P^D | При определении цвета пиксела выполняется операция "ИСКЛЮЧАЮЩЕЕ ИЛИ" между компонентами цвета подложки и пера |
R2_NOTXORPEN | ~(P^D) | Инверсия предыдущего значения |
R2_MASKNOTPEN | ~P & D | Комбинация цвета подложки и инверсии цвета пера |
R2_MASKPENNOT | P & ~D | Комбинация двух цветов: инверсии цвета подложки и цвета пера |
R2_MERGENOTPEN | ~P | D | Комбинация компонент цветов подложки и инверсии цвета пера |
R2_MERGEPENNOT | P | ~D | Комбинация инверсии цвета подложки и цвета пера |
В режиме R2_COPYPEN, который установлен в контексте отображения по умолчанию, цвет нарисованной линии будет такой же, как и цвет пера. Для режимов R2_BLACK и R2_WHITE цвет линии будет, соответственно, черный и белый. В режиме R2_NOP вы не увидите нарисованную линию, так как цвет вдоль нее вообще не изменится. Более интересен режим R2_NOT, при использовании которого на черном фоне будет нарисована белая линия, а на белом фоне - черная.
Для цветных изображений перечисленные выше формулы применяются по отдельности к каждой компоненте цвета (всего в Windows используется три компоненты цвета - красная, зеленая и голубая), поэтому для некоторых режимов рисования цвет линии предсказать достаточно трудно. Использование цветовых палитр, которые мы рассмотрим в третьей главе нашей книги, дополнительно усложняет эту задачу.
С помощью функции GetROP2 приложение может определить режим рисования, установленный для контекста отображения hdc: int WINAPI GetROP2(HDC hdc);
Таблица 7
Поле | Критерии проверки |
biPlanes | Должно содержать значение 1 |
biBitCount | Может быть равно 1, 4, 8 или 24.Вы можете столкнуться с новыми 16- и 32-битовыми форматами файлов DIB, используемых в Windows NT. Для них в этом поле могут находиться также значения 16 и 32. Если ваше приложение не умеет обрабатывать такие файлы, данную ситуацию следует рассматривать как ошибочную |
biCompression | Может принимать одно из следующих значений: BI_RGB, BI_RLE4, BI_RLE8.При использовании метода компрессии BI_RLE4 содержимое поля biBitCount должно быть равно 4. При использовании метода компрессии BI_RLE8 содержимое поля biBitCount должно быть равно 8.Ваше приложение может ограничиться обработкой bmp-файлов в формате BI_RGB, как это делает, например, приложение Paintbrush |
Итак, подводя итоги, можно выдать следующие рекомендации:
смело игнорируйте bmp-файлы в формате Presentation Manager, а если вы не можете так поступить, преобразуйте их в формат Windows;
в структуре BITMAPINFOHEADER проверяйте только поля biPlanes, biBitCount и biCompression;
так как метод компрессии RLE4 и RLE8 используются редко и не приводит к значительной экономии памяти, ваше приложение может не поддерживать компрессованные bmp-файлы.
Таблица 7
Константа | Описание |
DEFAULT_QUALITY | Качество не имеет значения |
DRAFT_QUALITY | Низкое качество. Допустимо масштабирование шрифтов, синтезирование наклонных, жирных, перечеркнутых и подчеркнутых символов |
PROOF_QUALITY | Высокое качество. Масштабирование шрифтов не допускается. При этом могут быть получены символы, имеющие размер, немного меньший запрошенного |