Creating a 24-Bit Per Pixel Subregion of a 24-Bit Per Pixel Bitmap

Original Bitmap

Click here for larger image

Subregion of the original bitmap

Environment: VC6

This article shows you how to create a portion of a 24-bit/pixel bitmap at runtime. In order to do this, you must add a 24-bit/pixel bitmap to your resources in VC++, decide what portion of the bitmap you wish (specified by the x-y coordinates of the upper left corner and the horizontal/vertical size of the portion), and what .bmp file you want the new portion of the bitmap to be store. The .bmp file created can be used at a later time, but in addition the bitmap of the subregion can be retrieved and used, for example, in your OnDraw function.

In the following code sample, we create a portion of a huge bitmap. The subregion is 416 by 224 pixels, but the original bitmap is well over 100 times this size.

CBitmapSubRegion bsr;
BOOL bSuccess;
// IDB_BITMAP_SCHUMACHERCAR is a 24-bit/pixel 
// resource ID added to VC++
bSuccess = bsr.SetResourceID(IDB_BITMAP_SCHUMACHERCAR);
if (bSuccess)
  bSuccess = bsr.SetFileNameOfResourceBitmap(
  if (bSuccess)
    // Want to create a subregion which starts at 
    // (x,y) of (259,317) and is 416-pixels wide by 
    // 224-pixels tall
    bSuccess = bsr.SetSubRegionOfBitmap(259,317,416,224);
    if (bSuccess)
      //Set where to store the new bitmap
      bSuccess = bsr.SetFileNameForNewBitmap(
      if (bSuccess)
        bSuccess = bsr.CreateBitmapOfSubRegion();
        if (bSuccess)
          m_pBitmapSubRegion = 


Download source - 5 Kb


  • Getting Linking errors..

    Posted by Legacy on 12/27/2001 12:00am

    Originally posted by: GMR

    BitmapSubRegion.obj : error LNK2001: unresolved external symbol "public: __thiscall CString::~CString(void)" (??1CString@@QAE@XZ)
    BitmapSubRegion.obj : error LNK2001: unresolved external symbol "public: __thiscall CString::CString(void)" (??0CString@@QAE@XZ)
    BitmapSubRegion.obj : error LNK2001: unresolved external symbol "public: static void __stdcall CObject::operator delete(void *,char const *,int)" (??3CObject@@SGXPAXPBDH@Z)................................................................

  • Where do I find BitmapCopy.h ? (I'm learning C++) thanks

    Posted by Legacy on 10/24/2001 12:00am

    Originally posted by: Bryan

    Hi, I was able to locate the includes for stdafx.h, but never could find BitmapCopy.h. in any of my library files, is it included in Microsoft VC++ libraries or is it a seperate download? thanks
    I'm new to C++ programming (I've just done some OOP stuff)

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

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Enterprises are increasingly looking to platform as a service (PaaS) to lower their costs and speed their time to market for new applications. Developing, deploying, and managing applications in the cloud eliminates the time and expense of managing a physical infrastructure to support them. PaaS offerings must deliver additional long-term benefits, such as a lower total cost of ownership (TCO), rapid scalability, and ease of integration, all while providing robust security and availability. This report …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date