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
-
I suppose you may achieve this effect by changing color temperature, like http://www.stereopsis.com/flux/ does, but I'm not sure how to do this programatically... – Andriy Volkov Jun 22 '09 at 02:31
4 Answers
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 this is a very interesting solution indeed. so you are saying i could just adjust the background color the form? – Alex Gordon Jun 22 '09 at 02:28
-
Yep. I gave it a quick test (with the sliders still there) and it seemed to work a treat. – Dan F Jun 22 '09 at 02:38
-
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 – Alex Gordon Jun 22 '09 at 03:55
-
You'd have to add the on top stuff yourself, I just ran the sample straight as it was. – Dan F Jun 22 '09 at 04:24
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.
To convert to grayscale in C#:
https://web.archive.org/web/20141230145627/http://bobpowell.net/grayscale.aspx
Then, to convert to a shade of red, zero 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.)

- 24,203
- 9
- 60
- 84

- 16,679
- 4
- 49
- 69
-
thank u very much this seems very helpful, but i have added something please check it – Alex Gordon Jun 22 '09 at 01:50
-
this would colorize it red, but not create it as a filter as the original question described. – Ape-inago Jun 22 '09 at 01:51
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).

- 6,379
- 1
- 19
- 11
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.

- 951,095
- 183
- 1,149
- 1,285