Двоичные (бинарные) растровые операции


Этот раздел перечисляет коды бинарной растровой операции, используемые функциями 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 Видимая красная/зеленая линия

 

Назад в оглавление темы
На главную страницу темы
Перевод 02.10.2004 20:36 ©Copyright V. Sokovikov
Hosted by uCoz