2011-08-05 18 views

risposta

29
newR = 1.0 - r 
newG = 1.0 - g 
newB = 1.0 - b 

Se il colore ha un valore premoltiplicato Alfa utilizzare l'alfa invece di 1.0:

newR = a - r 
newG = a - g 
newB = a - b 
+0

Dopo aver fatto la domanda, l'ho scoperto anche mentre lo facevo su carta, così semplice ... –

+0

Cosa succede se il colore è RGBA (1, 1, 1, 1)? –

+0

@Ricardo, l'inverso di RGBA (1,1,1,1) è RGBA (0,0,0,1). C'è qualcosa di confuso riguardo alla risposta che ha reso questo non ovvio? –

2

Se si sta utilizzando i valori RGB di 255, si potrebbe fare qualcosa di simile:

newR = 255 - r; 
 
newG = 255 - g; 
 
newB = 255 - b;

Per capire questo concetto, immagina ogni valore come una linea numerica che va da 0 a 255. Se si traccia un numero su quella linea numerica, il numero sarà tale distanza dall'inizio della linea numerica. Al fine di negarlo, il numero deve viaggiare all'altro capo della linea numerica. Questo algoritmo sostanzialmente capovolge la linea del numero senza spostare l'inizio o la fine. La nostra linea numerica va da 0 a 255, quindi, se il numero era 10 lontano dall'inizio (10), ora sarà 10 lontano dalla fine (245), quindi annullando il colore.

Problemi correlati