BMP MERGER — A Reusable Class to Merge BMP files, Load a Bitmap from a BMP File, and Display HBITMAP without Flicker

Environment: Windows 2000 SP2, VC6 SP3

  1. MFC is NOT needed.
  2. A HBITMAP is created from a group of BMP files and the final palette is also returned if needed.
  3. Loads a bitmap from a BMP file; the corresponding palette is also returned.
  4. Displays a bitmap to the given DC without flicker at the given starting point.
  5. Three types of styles can be applied while merging bitmaps. See the images.
    • HORIZONTAL_TILE—This is the default. Aligns all bitmaps horizontally.
    • VERTICAL_TILE—Aligns all bitmaps vertically.
    • MATRIX_TILE—Aligns bitmaps in a matrix style. Gaps are filled with the given background color.
  6. The corresponding palette is also returned if needed; otherwise, it passes NULL if the palette is not needed.
  7. If there are any gaps after merging, they will be filled with the given background color. The default color is BLACK.

To see how the demo works, click the Horizontal, Vertical, and Matrix toolbar buttons. See the following sample source code.

void CBmpLoaderView::OnDraw(CDC* pDC)
CBmpLoaderDoc* pDoc = GetDocument();

CBitmapMerger BmpMerger;
int width=0, height=0;
LPCTSTR aFiles[5] = {“Bmp1.bmp”, “Bmp2.bmp”,
“Bmp3.bmp”, “Bmp4.bmp”, “Bmp5.bmp”};
hCombBmp = BmpMerger.CombineBitmaps(aFiles, 5, &width, &height,
&hPal, RGB(128,128, 128), g_mode);

//>> hCombBmp = comb.LoadBitmapFromFile(“Bmp4.bmp”);

BmpMerger.DisplayBmp(pDC->GetSafeHdc(), hCombBmp, hPal, 5, 5);

DeleteObject( hPal );
DeleteObject( hCombBmp );


Download demo project – 288 Kb

Download source – 13 Kb

More by Author

Must Read