Этот раздел перечисляет коды бинарной растровой операции, используемые функциями GetROP2 и SetROP2. Коды растровой операции определяют, как GDI объединяет биты выбранного пера с битами в целевом (принимающем) точечном рисунке.
Каждый код растровой операции обозначает Булеву операцию, в котором значения пикселей в выбранном пере и принимающем точечном рисунке объединяются. Ниже в таблице - два операнда, используемые в этих операциях.
Операнд |
Предназначение |
---|---|
P | Выбранное перо |
D | Принимающий точечный рисунок |
Булевы операторы, используемые в этих операциях следуют ниже.
Оператор |
Предназначение |
---|---|
a | Побитовое И (AND) |
n | Побитовое НЕ (NOT) (инверсия) |
o | Побитовое ИЛИ (OR) |
x | Побитовое исключающее ИЛИ (XOR) |
Все Булевы операции представлены в обратной польской нотации. Например, нижеследующая операция заменяет значения пикселей в целевом (принимающем) точечном рисунке комбинацией значений пикселя пера и выбранной кисти:
DPo |
Каждый код растровой операции - 32-разрядное целое число, старшее слово которого - индекс Булевой операции, а младшее слово которого - код операции. 16-разрядный индекс операции - нулевое дополнительное 8-разрядное значение, которое обозначает все возможные результаты, вытекающие из Булевой операции с двумя параметрами (в этой ситуации, значения пера и приемника). Например, индексы для операций DPo и DPan показываются в следующем ниже списке.
P | D | DPo | DPan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
Список ниже излагает режимы рисования и Булевы операции, которые они представляют.
Растровая операция |
Булева операция |
---|---|
R2_BLACK | 0 |
R2_COPYPEN | P |
R2_MASKNOTPEN | DPna |
R2_MASKPEN | DPa |
R2_MASKPENNOT | PDna |
R2_MERGENOTPEN | DPno |
R2_MERGEPEN | DPo |
R2_MERGEPENNOT | PDno |
R2_NOP | D |
R2_NOT | Dn |
R2_NOTCOPYPEN | Pn |
R2_NOTMASKPEN | DPan |
R2_NOTMERGEPEN | DPon |
R2_NOTXORPEN | DPxn |
R2_WHITE | 1 |
R2_XORPEN | DPx |
Для монохромного устройства GDI отображает значение нуль как черный, а значение 1 как белый цвет. Если приложение пытается рисовать черным пером в белом приемнике, используя доступные бинарные растровые операции, происходят нижеследующие результаты.
Растровая операция |
Результат |
---|---|
R2_BLACK | Видимая черная линия |
R2_COPYPEN | Видимая черная линия |
R2_MASKNOTPEN | Не видимая линия |
R2_MASKPEN | Видимая черная линия |
R2_MASKPENNOT | Видимая черная линия |
R2_MERGENOTPEN | Не видимая линия |
R2_MERGEPEN | Видимая черная линия |
R2_MERGEPENNOT | Видимая черная линия |
R2_NOP | Не видимая линия |
R2_NOT | Видимая черная линия |
R2_NOTCOPYPEN | Не видимая линия |
R2_NOTMASKPEN | Не видимая линия |
R2_NOTMERGEPEN | Видимая черная линия |
R2_NOTXORPEN | Видимая черная линия |
R2_WHITE | Не видимая линия |
R2_XORPEN | Не видимая линия |
Для цветного устройства GDI использует RGB - значения, чтобы представить цвет пера и приемника. Значение цвета RGB - длинное целое число, которое содержит красное, зеленое и синее поля цвета, каждое из которых определяется яркостью указанного цвета. Диапазон яркости - от 0 до 255. Значения скомпонованы в трех младших байтах длинного целого числа. Цвет пера - всегда чистый цвет, но цвет приемника может быть смесью любых двух или трех цветов. Если приложение пытается рисовать белым пером в синем приемнике, используя доступные бинарные растровые операции, получаются нижеследующие результаты.
Растровая операция |
Результат |
---|---|
R2_BLACK | Видимая черная линия |
R2_COPYPEN | Видимая белая линия |
R2_MASKNOTPEN | Видимая черная линия |
R2_MASKPEN | Невидимая синяя линия |
R2_MASKPENNOT | Видимая красная/зеленая линия |
R2_MERGENOTPEN | Невидимая синяя линия |
R2_MERGEPEN | Видимая белая линия |
R2_MERGEPENNOT | Видимая белая линия |
R2_NOP | Невидимая синяя линия |
R2_NOT | Видимая красная/зеленая линия |
R2_NOTCOPYPEN | Видимая черная линия |
R2_NOTMASKPEN | Видимая красная/зеленая линия |
R2_NOTMERGEPEN | Видимая черная линия |
R2_NOTXORPEN | Невидимая синяя линия |
R2_WHITE | Видимая белая линия |
R2_XORPEN | Видимая красная/зеленая линия |