Changing Colors in Bitmaps and Making Icons from Them

Friday Mar 14th 2003 by Alexander Hritonenkov

des: Create a class for changing colors in a bitmap. You can also make an icon out of the bitmaps.

Environment: MFC/GDI

The day has come when I need to have a large number of identical icons with only one difference—some colors will change from icon to icon. I found the solution for making all of my icons from a single bitmap, and changing colors on the fly. So, I wrote my CCloneBitmap class. It is derived from CBitmap and is able to change colors and export 32x32 icons.

It is very simple to use. Just follow these steps:

  1. Load the bitmap using the LoadBitmap() function.
  2. Make a clone of this bitmap by calling a Clone() method.
  3. Change colors of the bitmap by calling a ChangeColor() method.
  4. You can make a 32x32 icon from this bitmap (if bitmap is 32x32).

Here is a simple example of how to use this class:

CCloneBitmap bmpClone;
HICON hIcon;
  bmpClone.ChangeColor(IRGB(0,0,0), IRGB(255,0,0));
  // change BLACK pixels to RED ones.
  // make icon, using WHITE color as transparent.
Note: Remember to use the IRGB() macro instead of RGB().

If you have a color in the COLORREF variable, use the INVERSECOLOR() macro:

bmpClone.ChangeColor(IRGB(0,0,0), INVERSECOLOR(myColor));


Download source - 2 Kb
Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved