Condividi tramite


Operazioni raster binarie

Questa sezione elenca i codici di operazione raster binaria usati dalle funzioni diGetROP2e setROP2setROP2. I codici di operazione raster definiscono il modo in cui GDI combina i bit dalla penna selezionata con i bit nella bitmap di destinazione.

Ogni codice dell'operazione raster rappresenta un'operazione booleana in cui vengono combinati i valori dei pixel nella penna selezionata e la bitmap di destinazione. Di seguito sono riportati i due operandi usati in queste operazioni.

Operando Significato
P Penna selezionata
D Bitmap di destinazione

 

Gli operatori booleani usati in queste operazioni seguono.

Operatore Significato
un AND bit per bit
n NOT bit per bit (inverso)
o OR bit per bit
x OR esclusivo bit per bit (XOR)

 

Tutte le operazioni booleane vengono presentate in notazione polacca inversa. Ad esempio, l'operazione seguente sostituisce i valori dei pixel nella bitmap di destinazione con una combinazione dei valori pixel della penna e del pennello selezionato:

DPo 

Ogni codice dell'operazione raster è un intero a 32 bit la cui parola di ordine elevato è un indice dell'operazione booleana e la cui parola di ordine basso è il codice dell'operazione. L'indice dell'operazione a 16 bit è un valore a 8 bit esteso zero che rappresenta tutti i possibili risultati risultanti dall'operazione booleana su due parametri (in questo caso, i valori della penna e della destinazione). Ad esempio, gli indici dell'operazione per le operazioni DPo e DPan sono visualizzati nell'elenco seguente.

P D DPo Dpan
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

Nell'elenco seguente vengono illustrate le modalità di disegno e le operazioni booleane rappresentate.

Operazione raster Operazione booleana
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

 

Per un dispositivo monocromatico, GDI esegue il mapping del valore zero a nero e del valore da 1 a bianco. Se un'applicazione tenta di disegnare con una penna nera in una destinazione bianca utilizzando le operazioni raster binarie disponibili, si verificano i risultati seguenti.

Operazione raster Risultato
R2_BLACK Linea nera visibile
R2_COPYPEN Linea nera visibile
R2_MASKNOTPEN Nessuna linea visibile
R2_MASKPEN Linea nera visibile
R2_MASKPENNOT Linea nera visibile
R2_MERGENOTPEN Nessuna linea visibile
R2_MERGEPEN Linea nera visibile
R2_MERGEPENNOT Linea nera visibile
R2_NOP Nessuna linea visibile
R2_NOT Linea nera visibile
R2_NOTCOPYPEN Nessuna linea visibile
R2_NOTMASKPEN Nessuna linea visibile
R2_NOTMERGEPEN Linea nera visibile
R2_NOTXORPEN Linea nera visibile
R2_WHITE Nessuna linea visibile
R2_XORPEN Nessuna linea visibile

 

Per un dispositivo a colori, GDI usa valori RGB per rappresentare i colori della penna e della destinazione. Un valore di colore RGB è un numero intero lungo che contiene un rosso, un verde e un campo di colore blu, ognuno dei quali specifica l'intensità del colore specificato. Le intensità sono compresi tra 0 e 255. I valori vengono compressi nei tre byte di ordine basso dell'intero lungo. Il colore di una penna è sempre un colore a tinta unita, ma il colore della destinazione può essere una combinazione di due o tre colori. Se un'applicazione tenta di disegnare con una penna bianca su una destinazione blu usando le operazioni raster binarie disponibili, si verificano i risultati seguenti.

Operazione raster Risultato
R2_BLACK Linea nera visibile
R2_COPYPEN Linea bianca visibile
R2_MASKNOTPEN Linea nera visibile
R2_MASKPEN Linea blu invisibile
R2_MASKPENNOT Linea rossa/verde visibile
R2_MERGENOTPEN Linea blu invisibile
R2_MERGEPEN Linea bianca visibile
R2_MERGEPENNOT Linea bianca visibile
R2_NOP Linea blu invisibile
R2_NOT Linea rossa/verde visibile
R2_NOTCOPYPEN Linea nera visibile
R2_NOTMASKPEN Linea rossa/verde visibile
R2_NOTMERGEPEN Linea nera visibile
R2_NOTXORPEN Linea blu invisibile
R2_WHITE Linea bianca visibile
R2_XORPEN Linea rossa/verde visibile