Не меняется, т. е. перо
Таблица 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 | Высокое качество. Масштабирование шрифтов не допускается. При этом могут быть получены символы, имеющие размер, немного меньший запрошенного |