Dela via


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