tags:

views:

156

answers:

4

i would like to program a little app that will change the colors of the screen. im not talking about the darkness. i want it to mimic what it would look like if for example you put on blue lenses or red lenses. so i would like to input the color and i want the screen to look as though i put on lenses of that particular color. well i actually need the program to semi-permanently change the users experience on the computer. i need the computer for the entire session that it is turned on to be changed this color

+1  A: 

Take a snapshot of the screen, convert each pixel into its grayscale value, then change the pixel value to a percentage of red. This will preserve the contrast throughout the image while also presenting a red tone.

[Edit] To convert to grayscale in C#:
http://www.bobpowell.net/grayscale.htm

Then, to convert to a shade of red, 0 out the values in the green and blue for each pixel.

(You can probably do the above in one shot, but this should get you started.)

Michael Todd
thank u very much this seems very helpful, but i have added something please check it
I__
this would colorize it red, but not create it as a filter as the original question described.
Ape-inago
+3  A: 

Transparent, Click Through forms might help you out. It makes a nice see through form that lets mouse clicks pass through it. The solution is in VS2003 format, but it upsizes to 2008 nicely. You could take that sample, rip the sliders off, get rid of the borders and make it fullscreen + topmost. I don't know if it'll accurately simulate a lens though, someone more into optics can tell me if I'm wrong :-)

Dan F
@dan this is a very interesting solution indeed. so you are saying i could just adjust the background color the form?
I__
Yep. I gave it a quick test (with the sliders still there) and it seemed to work a treat.
Dan F
very cool thanks for helping me out with this. so you are saying it colored the screen and you were able to click through it and it was always on top? im having some trouble running it
I__
You'd have to add the on top stuff yourself, I just ran the sample straight as it was.
Dan F
+1  A: 

If the lenses you are trying to simulate are red, green or blue, simply zeroing the other two colour components of each pixel should work. A coloured filter lens works by passing only a certain wavelength of light, and absorbing the others. Zeroing the non-desired components of the colour should simulate this accurately, I believe.

To simulate cyan, magenta, or yellow lenses, zeroing the one other colour component (e.g. the red component in the case of cyan tinted glasses) should work.

I'm not sure how to generalise beyond these simple cases. I suspect converting to say HSV and filtering based on the hue might work.

To change this for the entire system and use it in interactions with ordinary programs, you could change the colour profile for the display. For paletted/indexed-colour displays, this could be done by changing the colour look-up table (CLUT) for the display adapter. PowerStrip is a handy utility with versatile colour controls that should be able to achieve this quickly and easily on modern display adapters (e.g. by adjusting the red, green and blue response curves independently).

cheduardo
A: 

I came across Color Oracle and thought it might help. Here is the short description:

Color Oracle is a colorblindness simulator for Windows, Mac and Linux. It takes the guesswork out of designing for color blindness by showing you in real time what people with common color vision impairments will see.

Greg Hewgill