Les rasters
En fait, lorsque vous dessinez sous Windows, Windows effectue une opération booléenne entre les pixels du stylo et ceux de la surface sur laquelle il peint.
Ce genre d'opération s'appelle une opération raster (en abrégé anglophone ROP). Plus exactement, comme il ne s'agit que de faire des opérations qu'entre les pixels du stylo et de la surface, les opérations logiques sont appelées plus exactement ROP2.
Par défaut, Windows utilise l'option de raster nommé R2_COPYPEN. Cela signifie que Windows va simplement recopier le pixel du stylo sur la surface de destination.
Mais il existe 15 autres possibilités comme par exemple:
R2NOTMERGEPEN, ce code ROP2 effectue un ou logique entre les pixels du stylo et de la surface puis inverse le résultat.
Pour simplifier, partons d'un écran monochrome noir et blanc:si vous dessinez en noir sur fond blanc, vous obtenez du noir en blanc sur fond noir:du noir, en blanc sur blanc: du noir en noir sur noir: du blanc !
Ainsi, vous dessinez toujours en noir, sauf lorsque vous arrivez sur du noir avec un stylo noir où là vous dessinerez en blanc, permettant ainsi de visualiser le dessin, ce qui aurait été impossible autrement !
Pour changer le code ROP, vous utiliserez la fonction SetROP2 (hdc, nDrawMode); où hdc n'est plus à présenter, nDrawMode est une valeur correspondant au tableau qui suit.
De même, pour connaître le mode de tracé, GetROP2 (hdc);
S pour le stylo, D pour la destination
Valeur |
Opération |
R2_BLACK |
0 |
R2_WHITE |
1 |
R2_MERGEPEN |
S | D |
R2_MERGEPENNOT |
S | !D |
R2_MERGENOTPEN |
!S | D |
R2_NOTMERGEPEN |
!(S | D) |
R2_MASKNOTPEN |
!S & D |
R2_MASKPENNOT |
S & !D |
R2_NOTMASKPEN |
!(S & D) |
R2_MASKPEN |
S & D |
R2_COPYPEN |
S |
R2_NOTCOPYPEN |
!S |
R2_NOP |
D |
R2_NOT |
!D |
R2_XORPEN |
S ^ D |
R2_NOTXORPEN |
! (S ^ D) |
Dans le tableau, j'utilise ! pour dire opération logique NON comme en C...
| pour le ou logique inclusif, ^ pour le ou logique exclusif (xor qui n'a rien à voir avec une série japonaise !) & pour le et logique
Bien évidemment, tout cela va se compliquer avec les couleurs, alors le plus simple se sera d'essayer !