Binära rasteråtgärder
I det här avsnittet visas de binära raster-åtgärdskoder som används av funktionerna GetROP2 och SetROP2. Raster-operation-koder definierar hur GDI kombinerar bitarna från den valda pennan med bitarna i målbitmappen.
Varje rasteråtgärdskod representerar en boolesk åtgärd där värdena för bildpunkterna i den valda pennan och målbitmappen kombineras. Följande är de två operander som används i dessa åtgärder.
Operand | Betydelse |
---|---|
P | Markerad penna |
D | Målbitmapp |
De booleska operatorer som används i dessa åtgärder följer.
Operatör | Betydelse |
---|---|
a | Bitvis OCH |
n | Bitvis INTE (invertera) |
o | Bitvis ELLER |
x | Bitvis exklusiv ELLER (XOR) |
Alla booleska åtgärder presenteras i omvänd polsk notation. Följande åtgärd ersätter till exempel värdena för bildpunkterna i målbitmappen med en kombination av pennans pixelvärden och den markerade penseln:
DPo
Varje raster-operation-kod är ett 32-bitars heltal vars högordningsord är ett booleskt åtgärdsindex och vars lågordningsord är åtgärdskoden. 16-bitars åtgärdsindexet är ett nollutsträckt 8-bitarsvärde som representerar alla möjliga resultat som uppstår från den booleska åtgärden på två parametrar (i det här fallet penn- och målvärdena). Till exempel visas åtgärdsindexen för DPo- och DPan-åtgärderna i följande lista.
P | D | DPo | Dpan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
I följande lista beskrivs de ritningslägen och de booleska åtgärder som de representerar.
Rasteråtgärd | Boolesk åtgärd |
---|---|
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 |
För en monokrom enhet mappar GDI värdet noll till svart och värdet 1 till vitt. Om ett program försöker rita med en svart penna på ett vitt mål med hjälp av tillgängliga binära rasteråtgärder uppstår följande resultat.
Rasteråtgärd | Resultat |
---|---|
R2_BLACK | Synlig svart linje |
R2_COPYPEN | Synlig svart linje |
R2_MASKNOTPEN | Ingen synlig linje |
R2_MASKPEN | Synlig svart linje |
R2_MASKPENNOT | Synlig svart linje |
R2_MERGENOTPEN | Ingen synlig linje |
R2_MERGEPEN | Synlig svart linje |
R2_MERGEPENNOT | Synlig svart linje |
R2_NOP | Ingen synlig linje |
R2_NOT | Synlig svart linje |
R2_NOTCOPYPEN | Ingen synlig linje |
R2_NOTMASKPEN | Ingen synlig linje |
R2_NOTMERGEPEN | Synlig svart linje |
R2_NOTXORPEN | Synlig svart linje |
R2_WHITE | Ingen synlig linje |
R2_XORPEN | Ingen synlig linje |
För en färgenhet använder GDI RGB-värden för att representera pennans och målets färger. Ett RGB-färgvärde är ett långt heltal som innehåller ett rött, ett grönt och ett blått färgfält, som var och en anger intensiteten för den angivna färgen. Intensiteterna varierar från 0 till 255. Värdena packas i de tre lågordningsbytena i det långa heltalet. Färgen på en penna är alltid en solid färg, men färgen på målet kan vara en blandning av två eller tre färger. Om ett program försöker rita med en vit penna på ett blått mål med hjälp av tillgängliga binära rasteråtgärder uppstår följande resultat.
Rasteråtgärd | Resultat |
---|---|
R2_BLACK | Synlig svart linje |
R2_COPYPEN | Synlig vit linje |
R2_MASKNOTPEN | Synlig svart linje |
R2_MASKPEN | Osynlig blå linje |
R2_MASKPENNOT | Synlig röd/grön linje |
R2_MERGENOTPEN | Osynlig blå linje |
R2_MERGEPEN | Synlig vit linje |
R2_MERGEPENNOT | Synlig vit linje |
R2_NOP | Osynlig blå linje |
R2_NOT | Synlig röd/grön linje |
R2_NOTCOPYPEN | Synlig svart linje |
R2_NOTMASKPEN | Synlig röd/grön linje |
R2_NOTMERGEPEN | Synlig svart linje |
R2_NOTXORPEN | Osynlig blå linje |
R2_WHITE | Synlig vit linje |
R2_XORPEN | Synlig röd/grön linje |