Condividi tramite


Operazioni raster binarie

Questa sezione elenca i codici di operazione raster binaria usati dalle funzioni GetROP2 e SetROP2 . 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
a 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 vengono 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 tra il valore zero e il valore da 1 a bianco. Se un'applicazione tenta di disegnare con una penna nera in una destinazione bianca usando 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 riga visibile
R2_MERGEPEN Linea nera visibile
R2_MERGEPENNOT Linea nera visibile
R2_NOP Nessuna riga visibile
R2_NOT Linea nera visibile
R2_NOTCOPYPEN Nessuna riga visibile
R2_NOTMASKPEN Nessuna riga visibile
R2_NOTMERGEPEN Linea nera visibile
R2_NOTXORPEN Linea nera visibile
R2_WHITE Nessuna riga visibile
R2_XORPEN Nessuna riga visibile

 

Per un dispositivo a colori, GDI usa i valori RGB per rappresentare i colori della penna e della destinazione. Un valore di colore RGB è un intero lungo che contiene un valore rosso, un verde e un campo colore blu, ognuno che specifica l'intensità del colore specificato. Le intensità vanno da 0 a 255. I valori vengono compressi nei tre byte a basso ordine dell'intero lungo. Il colore di una penna è sempre un colore a tinta unita, ma il colore della destinazione può essere una miscela di due o tre colori. Se un'applicazione tenta di disegnare con una penna bianca in 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