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

  • 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 …

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

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