Этот раздел перечисляет троичные (тернарные) коды растровой операции, используемые функциями BitBlt, PatBlt и StretchBlt. Тернарные коды растровой операции определяют, как GDI объединяет биты в исходном точечном рисунке с битами в принимающем точечном рисунке.
Каждый код растровой операции представляет Булеву операцию в которой значения пикселей в источнике, выбранной кисти и приемнике объединяются. Ниже следуют три операнда, используемые в этих операциях.
Операнд |
Предназначение |
|---|---|
| D | Принимающий точечный рисунок |
| P | Выбранная кисть также называемая образцом) |
| S | Источниковый точечный рисунок |
Булевы операторы, используемые в этих операциях следуют ниже.
Оператор |
Предназначение |
|---|---|
| a | Побитовое И (AND) |
| n | Побитовое НЕ (NOT) (инверсия) |
| o | Побитовое ИЛИ (OR) |
| x | Побитовое исключающее ИЛИ (XOR) |
Все Булевы операции представлены в обратной польской нотации. Например, нижеследующая операция заменяет значения пикселей в целевом (принимающем) точечном рисунке комбинацией значений пикселя источника и кисти:
DPo |
Нижеследующая операция объединяет значения пикселей в источнике и кисти со значениями пикселя принимающего точечного рисунка (имеются альтернативные написания одной и той же функции, так что, хотя написания отдельных может не находиться в списке, должна быть эквивалентная форма):
|
Каждый код растровой операции - 32-разрядное целое число, старшее слово которого - индекс Булевой операции, а младшее слово которого - код операции. 16-разрядный индекс операции - нулевое дополнительное 8-разрядное значение, которое представляет результирующие значения после Булевой операции на предопределенной кисти, источнике и приемнике. Например, индексы операции PSo и DPSoo показываются в следующем ниже списке.
P |
S |
D |
PSo |
DPSoo |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
| Индекс операции: | 00FCh | 00FEh |
В этом случае, PSo имеет индекс операции 00FC (читает снизу вверх); DPSoo имеет индекс операции 00FE. Эти значения определяют местоположение соответствующих кодов растровой операции, как показано в Таблице А.1, " Коды растровой операции". Операция(действие) PSo находится в строке 252 (00FCh) таблицы; DPSoo находится в строке 254 (00FEh).
В SDK наиболее часто используемым растровым операциям дали специальные названия в заголовочном файле WINDOWS.H. Вам следует использовать эти имена всякий раз, когда это возможно в ваших приложениях.
Когда исходные и принимающие точечные рисунки являются монохромными, значение бита нуля обозначает черный пиксель, а значение бита 1 обозначает белый пиксель. Когда источниковый и целевой точечные рисунки являются цветными, эти цвета представляются RGB - значениями. Дополнительную информацию о RGB - значениях, см. статью RGB.
Таблица А.1 Коды растровой операции
Булева функция (шестнадцатеричная) |
Растровая операция (шестнадцатеричная) |
Булева функция в обратной польской нотации |
Стандартное имя |
|---|---|---|---|
| 00 | 00000042 | 0 | BLACKNESS |
| 01 | 00010289 | DPSoon | – |
| 02 | 00020C89 | DPSona | – |
| 03 | 000300AA | PSon | – |
| 04 | 00040C88 | SDPona | – |
| 05 | 000500A9 | DPon | – |
| 06 | 00060865 | PDSxnon | – |
| 07 | 000702C5 | PDSaon | – |
| 08 | 00080F08 | SDPnaa | – |
| 09 | 00090245 | PDSxon | – |
| 0A | 000A0329 | DPna | – |
| 0B | 000B0B2A | PSDnaon | – |
| 0C | 000C0324 | SPna | – |
| 0D | 000D0B25 | PDSnaon | – |
| 0E | 000E08A5 | PDSonon | – |
| 0F | 000F0001 | Pn | – |
| 10 | 00100C85 | PDSona | – |
| 11 | 001100A6 | DSon | NOTSRCERASE |
| 12 | 00120868 | SDPxnon | – |
| 13 | 001302C8 | SDPaon | – |
| 14 | 00140869 | DPSxnon | – |
| 15 | 001502C9 | DPSaon | – |
| 16 | 00165CCA | PSDPSanaxx | – |
| 17 | 00171D54 | SSPxDSxaxn | – |
| 18 | 00180D59 | SPxPDxa | – |
| 19 | 00191CC8 | SDPSanaxn | – |
| 1A | 001A06C5 | PDSPaox | – |
| 1B | 001B0768 | SDPSxaxn | – |
| 1C | 001C06CA | PSDPaox | – |
| 1D | 001D0766 | DSPDxaxn | – |
| 1E | 001E01A5 | PDSox | – |
| 1F | 001F0385 | PDSoan | – |
| 20 | 00200F09 | DPSnaa | – |
| 21 | 00210248 | SDPxon | – |
| 22 | 00220326 | DSna | – |
| 23 | 00230B24 | SPDnaon | – |
| 24 | 00240D55 | SPxDSxa | – |
| 25 | 00251CC5 | PDSPanaxn | – |
| 26 | 002606C8 | SDPSaox | – |
| 27 | 00271868 | SDPSxnox | – |
| 28 | 00280369 | DPSxa | – |
| 29 | 002916CA | PSDPSaoxxn | – |
| 2A | 002A0CC9 | DPSana | – |
| 2B | 002B1D58 | SSPxPDxaxn | – |
| 2C | 002C0784 | SPDSoax | – |
| 2D | 002D060A | PSDnox | – |
| 2E | 002E064A | PSDPxox | – |
| 2F | 002F0E2A | PSDnoan | – |
| 30 | 0030032A | PSna | – |
| 31 | 00310B28 | SDPnaon | – |
| 32 | 00320688 | SDPSoox | – |
| 33 | 00330008 | Sn | NOTSRCCOPY |
| 34 | 003406C4 | SPDSaox | – |
| 35 | 00351864 | SPDSxnox | – |
| 36 | 003601A8 | SDPox | – |
| 37 | 00370388 | SDPoan | – |
| 38 | 0038078A | PSDPoax | – |
| 39 | 00390604 | SPDnox | – |
| 3A | 003A0644 | SPDSxox | – |
| 3B | 003B0E24 | SPDnoan | – |
| 3C | 003C004A | PSx | – |
| 3D | 003D18A4 | SPDSonox | – |
| 3E | 003E1B24 | SPDSnaox | – |
| 3F | 003F00EA | PSan | – |
| 40 | 00400F0A | PSDnaa | – |
| 41 | 00410249 | DPSxon | – |
| 42 | 00420D5D | SDxPDxa | – |
| 43 | 00431CC4 | SPDSanaxn | – |
| 44 | 00440328 | SDna | SRCERASE |
| 45 | 00450B29 | DPSnaon | – |
| 46 | 004606C6 | DSPDaox | – |
| 47 | 0047076A | PSDPxaxn | – |
| 48 | 00480368 | SDPxa | – |
| 49 | 004916C5 | PDSPDaoxxn | – |
| 4A | 004A0789 | DPSDoax | – |
| 4B | 004B0605 | PDSnox | – |
| 4C | 004C0CC8 | SDPana | – |
| 4D | 004D1954 | SSPxDSxoxn | – |
| 4E | 004E0645 | PDSPxox | – |
| 4F | 004F0E25 | PDSnoan | – |
| 50 | 00500325 | PDna | – |
| 51 | 00510B26 | DSPnaon | – |
| 52 | 005206C9 | DPSDaox | – |
| 53 | 00530764 | SPDSxaxn | – |
| 54 | 005408A9 | DPSonon | – |
| 55 | 00550009 | Dn | DSTINVERT |
| 56 | 005601A9 | DPSox | – |
| 57 | 00570389 | DPSoan | – |
| 58 | 00580785 | PDSPoax | – |
| 59 | 00590609 | DPSnox | – |
| 5A | 005A0049 | DPx | PATINVERT |
| 5B | 005B18A9 | DPSDonox | – |
| 5C | 005C0649 | DPSDxox | – |
| 5D | 005D0E29 | DPSnoan | – |
| 5E | 005E1B29 | DPSDnaox | – |
| 5F | 005F00E9 | DPan | – |
| 60 | 00600365 | PDSxa | – |
| 61 | 006116C6 | DSPDSaoxxn | – |
| 62 | 00620786 | DSPDoax | – |
| 63 | 00630608 | SDPnox | – |
| 64 | 00640788 | SDPSoax | – |
| 65 | 00650606 | DSPnox | – |
| 66 | 00660046 | DSx | SRCINVERT |
| 67 | 006718A8 | SDPSonox | – |
| 68 | 006858A6 | DSPDSonoxxn | – |
| 69 | 00690145 | PDSxxn | – |
| 6A | 006A01E9 | DPSax | – |
| 6B | 006B178A | PSDPSoaxxn | – |
| 6C | 006C01E8 | SDPax | – |
| 6D | 006D1785 | PDSPDoaxxn | – |
| 6E | 006E1E28 | SDPSnoax | – |
| 6F | 006F0C65 | PDSxnan | – |
| 70 | 00700CC5 | PDSana | – |
| 71 | 00711D5C | SSDxPDxaxn | – |
| 72 | 00720648 | SDPSxox | – |
| 73 | 00730E28 | SDPnoan | – |
| 74 | 00740646 | DSPDxox | – |
| 75 | 00750E26 | DSPnoan | – |
| 76 | 00761B28 | SDPSnaox | – |
| 77 | 007700E6 | DSan | – |
| 78 | 007801E5 | PDSax | – |
| 79 | 00791786 | DSPDSoaxxn | – |
| 7A | 007A1E29 | DPSDnoax | – |
| 7B | 007B0C68 | SDPxnan | – |
| 7C | 007C1E24 | SPDSnoax | – |
| 7D | 007D0C69 | DPSxnan | – |
| 7E | 007E0955 | SPxDSxo | – |
| 7F | 007F03C9 | DPSaan | – |
| 80 | 008003E9 | DPSaa | – |
| 81 | 00810975 | SPxDSxon | – |
| 82 | 00820C49 | DPSxna | – |
| 83 | 00831E04 | SPDSnoaxn | – |
| 84 | 00840C48 | SDPxna | – |
| 85 | 00851E05 | PDSPnoaxn | – |
| 86 | 008617A6 | DSPDSoaxx | – |
| 87 | 008701C5 | PDSaxn | – |
| 88 | 008800C6 | DSa | SRCAND |
| 89 | 00891B08 | SDPSnaoxn | – |
| 8A | 008A0E06 | DSPnoa | – |
| 8B | 008B0666 | DSPDxoxn | – |
| 8C | 008C0E08 | SDPnoa | – |
| 8D | 008D0668 | SDPSxoxn | – |
| 8E | 008E1D7C | SSDxPDxax | – |
| 8F | 008F0CE5 | PDSanan | – |
| 90 | 00900C45 | PDSxna | – |
| 91 | 00911E08 | SDPSnoaxn | – |
| 92 | 009217A9 | DPSDPoaxx | – |
| 93 | 009301C4 | SPDaxn | – |
| 94 | 009417AA | PSDPSoaxx | – |
| 95 | 009501C9 | DPSaxn | – |
| 96 | 00960169 | DPSxx | – |
| 97 | 0097588A | PSDPSonoxx | – |
| 98 | 00981888 | SDPSonoxn | – |
| 99 | 00990066 | DSxn | – |
| 9A | 009A0709 | DPSnax | – |
| 9B | 009B07A8 | SDPSoaxn | – |
| 9C | 009C0704 | SPDnax | – |
| 9D | 009D07A6 | DSPDoaxn | – |
| 9E | 009E16E6 | DSPDSaoxx | – |
| 9F | 009F0345 | PDSxan | – |
| A0 | 00A000C9 | DPa | – |
| A1 | 00A11B05 | PDSPnaoxn | – |
| A2 | 00A20E09 | DPSnoa | – |
| A3 | 00A30669 | DPSDxoxn | – |
| A4 | 00A41885 | PDSPonoxn | – |
| A5 | 00A50065 | PDxn | – |
| A6 | 00A60706 | DSPnax | – |
| A7 | 00A707A5 | PDSPoaxn | – |
| A8 | 00A803A9 | DPSoa | – |
| A9 | 00A90189 | DPSoxn | – |
| AA | 00AA0029 | D | – |
| AB | 00AB0889 | DPSono | – |
| AC | 00AC0744 | SPDSxax | – |
| AD | 00AD06E9 | DPSDaoxn | – |
| AE | 00AE0B06 | DSPnao | – |
| AF | 00AF0229 | DPno | – |
| B0 | 00B00E05 | PDSnoa | – |
| B1 | 00B10665 | PDSPxoxn | – |
| B2 | 00B21974 | SSPxDSxox | – |
| B3 | 00B30CE8 | SDPanan | – |
| B4 | 00B4070A | PSDnax | – |
| B5 | 00B507A9 | DPSDoaxn | – |
| B6 | 00B616E9 | DPSDPaoxx | – |
| B7 | 00B70348 | SDPxan | – |
| B8 | 00B8074A | PSDPxax | – |
| B9 | 00B906E6 | DSPDaoxn | – |
| BA | 00BA0B09 | DPSnao | – |
| BB | 00BB0226 | DSno | MERGEPAINT |
| BC | 00BC1CE4 | SPDSanax | – |
| BD | 00BD0D7D | SDxPDxan | – |
| BE | 00BE0269 | DPSxo | – |
| BF | 00BF08C9 | DPSano | – |
| C0 | 00C000CA | PSa | MERGECOPY |
| C1 | 00C11B04 | SPDSnaoxn | – |
| C2 | 00C21884 | SPDSonoxn | – |
| C3 | 00C3006A | PSxn | – |
| C4 | 00C40E04 | SPDnoa | – |
| C5 | 00C50664 | SPDSxoxn | – |
| C6 | 00C60708 | SDPnax | – |
| C7 | 00C707AA | PSDPoaxn | – |
| C8 | 00C803A8 | SDPoa | – |
| C9 | 00C90184 | SPDoxn | – |
| CA | 00CA0749 | DPSDxax | – |
| CB | 00CB06E4 | SPDSaoxn | – |
| CC | 00CC0020 | S | SRCCOPY |
| CD | 00CD0888 | SDPono | – |
| CE | 00CE0B08 | SDPnao | – |
| CF | 00CF0224 | SPno | – |
| D0 | 00D00E0A | PSDnoa | – |
| D1 | 00D1066A | PSDPxoxn | – |
| D2 | 00D20705 | PDSnax | – |
| D3 | 00D307A4 | SPDSoaxn | – |
| D4 | 00D41D78 | SSPxPDxax | – |
| D5 | 00D50CE9 | DPSanan | – |
| D6 | 00D616EA | PSDPSaoxx | – |
| D7 | 00D70349 | DPSxan | – |
| D8 | 00D80745 | PDSPxax | – |
| D9 | 00D906E8 | SDPSaoxn | – |
| DA | 00DA1CE9 | DPSDanax | – |
| DB | 00DB0D75 | SPxDSxan | – |
| DC | 00DC0B04 | SPDnao | – |
| DD | 00DD0228 | SDno | – |
| DE | 00DE0268 | SDPxo | – |
| DF | 00DF08C8 | SDPano | – |
| E0 | 00E003A5 | PDSoa | – |
| E1 | 00E10185 | PDSoxn | – |
| E2 | 00E20746 | DSPDxax | – |
| E3 | 00E306EA | PSDPaoxn | – |
| E4 | 00E40748 | SDPSxax | – |
| E5 | 00E506E5 | PDSPaoxn | – |
| E6 | 00E61CE8 | SDPSanax | – |
| E7 | 00E70D79 | SPxPDxan | – |
| E8 | 00E81D74 | SSPxDSxax | – |
| E9 | 00E95CE6 | DSPDSanaxxn | – |
| EA | 00EA02E9 | DPSao | – |
| EB | 00EB0849 | DPSxno | – |
| EC | 00EC02E8 | SDPao | – |
| ED | 00ED0848 | SDPxno | – |
| EE | 00EE0086 | DSo | SRCPAINT |
| EF | 00EF0A08 | SDPnoo | – |
| F0 | 00F00021 | P | PATCOPY |
| F1 | 00F10885 | PDSono | – |
| F2 | 00F20B05 | PDSnao | – |
| F3 | 00F3022A | PSno | – |
| F4 | 00F40B0A | PSDnao | – |
| F5 | 00F50225 | PDno | – |
| F6 | 00F60265 | PDSxo | – |
| F7 | 00F708C5 | PDSano | – |
| F8 | 00F802E5 | PDSao | – |
| F9 | 00F90845 | PDSxno | – |
| FA | 00FA0089 | DPo | – |
| FB | 00FB0A09 | DPSnoo | PATPAINT |
| FC | 00FC008A | PSo | – |
| FD | 00FD0A0A | PSDnoo | – |
| FE | 00FE02A9 | DPSoo | – |
| FF | 00FF0062 | 1 | WHITENESS |
| 8000 | 80000000 | Windows 98/Me, Windows 2000/XP: NOMIRRORBITMAP |