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();
  ASSERT_VALID(pDoc);

  CBitmapMerger BmpMerger;
  int width=0, height=0;
  HPALETTE hPal = NULL;
  HBITMAP hCombBmp = NULL;
  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 );
}

Downloads

Download demo project - 288 Kb
Download source - 13 Kb


Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • IBM Worklight is a mobile application development platform that lets you extend your business to mobile devices. It is designed to provide an open, comprehensive platform to build, run and manage HTML5, hybrid and native mobile apps.

  • Protecting business operations means shifting the priorities around availability from disaster recovery to business continuity. Enterprises are shifting their focus from recovery from a disaster to preventing the disaster in the first place. With this change in mindset, disaster recovery is no longer the first line of defense; the organizations with a smarter business continuity practice are less impacted when disasters strike. This SmartSelect will provide insight to help guide your enterprise toward better …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds