In the beginning, Windows took a kind of virtual approach to colors. Virtual tru-color achieved by dithering only eight basic colors. The dithering method used is known as ordered dithering or the Bayer Matrix. The interesting thing is that if programs of the Windows 1.0/2.0 era are let loose on a hi-color or tru-color environment, they can take full advantage of it. You will find a few examples farther below.
This approach may seem strange nowadays, but it should not be forgotten that dithering works a lot better on CRTs than it does on TFTs, especially if the latter are running in their native resolution. On a 12" CRT (the standard monitor size in the 80s) it is very difficult to tell apart the dithered from the solid colors in the Windows 3.1 color panel.
The eight basic colors were essentially the eight digital colors, but
at least on IBM hardware (don't know how it was on the Tandy 2000)
Windows used the bright colors of the IBM palette, where those colors
off still have 1/3 brightness:
The order of the colors is different from the original IBM order, but retains one functionality: the colors in opposite positions form contrasting pairs. Black and white, red and cyan, green and magenta, yellow and blue. In terms of binary numbers, you only have to flip every bit of the number of a color (a XOR operation) to get a contrasting one. Contrasting colors are used for highlights, and they can be used by icons.
With some hardware Windows could use more colors. There were a few cards with 256-color drivers for Windows 2.0 (the Paradise VGA Professional for example), and (unlike in Windows 3.x) these colors were used in the control panel. I first saw this in a magazine picture, meanwhile I found those drivers and took some screenshots myself.
With Windows 3.0, the approach changed. Microsoft introduced a new bitmap format that could handle color in various depths, the old format was only monochrome. Scalable graphics gave way to fixed-size bitmap graphics. Virtual tru-color gave way to palettes. Standard was now a 16-color palette. Those of Windows 3.0 and Windows 3.1 are a bit different:
|Windows 3.0||Windows 3.1|
The difference is only in the darker colors. With Windows 3.0, they were ¾ the brightness of the bright colors, with Windows 3.1, ½. The latter palette is more logical, the former in general better useable. Note that in DOSBox, the palette is rendered incorrectly if either version of Windows runs in 16-color mode. Run them in 256-color mode instead. There are Windows 3.0 drivers for Paradise SVGA cards, which are emulated by DOSBox.
The bright colors are the same in both palettes: these are actually the digital colors, a lot more garish than their IBM counterparts. It is probably no coincidence that with 3.0, the Windows world became a lot more gray, and colors were used less.
On the right you can see the 256-color palette of Windows 3.1. It is quite interesting how Microsoft handled this. The 16-color palette was split and formed the first and last eight colors, just as black and white are at the very beginning and end. Four more colors were added for the use of Windows: a pale green, a pale blue, an off-white, and a gray somewhere between the two grays of the 16-color palette. Three of these colors were used in the default color scheme Windows installed with a 256-color driver. These twenty colors were reserved by Windows, and could be used for the interface, though the four new colors did not show up in the color selector.
The 236 colors in between were, by default, a sort of gradient, still ordered in a way that flipping the bits would produce a contrasting color, but any program could redefine this part of the palette. As such, they could not be used for the interface. Under 256 colors, the Custom Color Selector looks just like under 16 colors (click on the screenshots to see the complete color panel):
There are limits to how well Windows will adjust to other palettes. If you set a monochrome bitmap as yor desktop wallpaper, Windows will always display it in black and white. Since it uses rather unsophisticated algorithms here, this can well mean that it's just black or just white. If you save the bitmap with a higher color depth, then Windows 3.1 will usually display it correctly.
The rules seem to be stricter for bitmaps embedded in executables. 16-color bitmaps that do not use the standard palette are displayed dithered in any setting lower than 32k.
Palette is a little program probably dating back to Windows 1.0 times. It does nothing but show 125 different colors. How these colors are generated, depends on Windows version and desktop settings. From left to right:
Note that there is no difference between a 16-color and 256-color desktop setting. Only tru-color makes a difference.
Klotz is a Tetris clone by Wolfgang Strobl, developed from 1989 to 1996. Klotz 2.11a (1990) runs on every Windows version from 2.0 to XP and has this beautiful gradient background, generated at start. Here you can see how the gradient looks on different Windows versions and color settings. It's the same as above, from left to right:
It is interesting how the gradients looks different, even though the algorithm is always the same. The difference between the 3.0 and 3.1 screenshot is really only the palette, even though the first looks more symmetrical than the second.