Putkasta on ollut puhetta väreistä jo useamman kerran.
Värien invertointiin on käytetty not operaattoria tai xor:attu pitkällä rivillä ykkösiä.
Tässä on nyt mielestäni kaikista yksinkertaisin keino invertoida:
Yksittäiset värikomponentit invertoidaan näin.
uusipuna = 255 - vanhapuna
uusiviher = 255 - vanhaviher
uusisini = 255 - vanhasini
Väri lasketaan näin:
R + 256 * G + 256 * 256 * B
(255 - R) + 256 * (255 - G) + 256 * 256 * (255 - B)
= (255 + 256 * 255 + 256 * 256 * 255) -
(R + 256 * G + 256 * 256 * B)
= &HFFFFFF - originaali väri
Joten yksinkertaisin tapa laskea invertoitu väri on tämä:(?)
invertti = &HFFFFFF - originaaliväri
Pitääkö tämä paikkansa, vai olenko väärässä?
Onko parempia tapoja?
Eiköhän se noin ole. Jos haluaa invertoida kuvan negatiiviksi, täytyy käyttää rasterioperaatiota vbNotSrcCopy. Ilmeisesti tämä suorittaa juuri mainitsemasi operaation jokaiselle pikselille erikseen
Aihe on jo aika vanha, joten et voi enää vastata siihen.