Click here to Skip to main content
11,647,018 members (78,898 online)
Click here to Skip to main content

CBitmapDC - An automatic memory DC wrapper

, 24 Nov 1999 121.1K 3.3K 48
Rate this:
Please Sign up or sign in to vote.
A handy class that provides a memory bitmap device context
  • Download demo project - 18 Kb
  • Download source - 5 Kb
  • <!-- Article Starts -->

    CBitmapDC is a subclass of CDC. It is a handy little class that provides a memory bitmap device context without having to reinvent the wheel every time you need one.

    Example 1

    CBitmapDC can be used to make a CBitmap on the fly
    1. make a memory bitmap DC by calling CBitmapDC's constructor with the desired bitmap width and height
    2. draw in this device context with normal CDC drawing functions
    3. call CBitmapDC's Close function, this returns a pointer to the finished CBitmap
    4. do whatever you want to do with the CBitmap
    5. delete the CBitmap
    <!-- start a block of source code -->
    void CMyView::OnDraw(CDC* pDC)
    {
      CBitmapDC bitmapDC(50, 50, pDC);
      bitmapDC.Rectangle(0, 0, 50, 50);
      bitmapDC.MoveTo(0,50);
      bitmapDC.LineTo(50,0);
      CBitmap *pbmp = bitmapDC.Close();
      DrawBitmap(pbmp, pDC, CPoint(10, 10));
      delete pbmp;
    }
    

    Example 2

    CBitmapDC can be used as a temporary scratchpad
    1. make a memory bitmap DC by calling CBitmapDC's constructor with the desired bitmap width and height
    2. draw in this device context with normal CDC drawing functions
    3. do whatever you want to do e.g. blit the memory DC to screen
    4. use the automatic cleanup of CBitmapDC's destructor
    void CMyView::OnDraw(CDC* pDC)
    {
      CBitmapDC bitmapDC_2(50, 50, pDC);
      bitmapDC_2.Rectangle(0, 0, 50, 50);
      bitmapDC_2.MoveTo(0, 0);
      bitmapDC_2.LineTo(50, 50);
      pDC->BitBlt(200, 10, 50, 50, &bitmapDC_2, 0, 0, SRCCOPY);
    }
    

    License

    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here

    Share

    About the Author

    Anneke Sicherer-Roetman
    Web Developer
    Netherlands Netherlands
    No Biography provided

    You may also be interested in...

    Comments and Discussions

     
    GeneralLicensing Pin
    AnnaPe18-Apr-11 4:26
    memberAnnaPe18-Apr-11 4:26 
    QuestionHow to display a bitmap image into a dialog in vc++/mfc Pin
    Anonymous2-Apr-05 23:49
    sussAnonymous2-Apr-05 23:49 
    GeneralPrinting Pin
    Gavriloaie Andrei11-Nov-04 7:25
    memberGavriloaie Andrei11-Nov-04 7:25 
    Questionhow to load Bitmap after a image manipulation? Pin
    gilazilla18-Aug-04 4:47
    membergilazilla18-Aug-04 4:47 
    Generalthanks very much Pin
    philipcunningham12-Apr-04 2:16
    memberphilipcunningham12-Apr-04 2:16 
    It may show how little I know about Bitmaps but this class is a real godsend. We have a large vector drawing to display and it takes forever, now we can generate a CBitmapDC copy of it and just BitBlt it instead.

    Many thanks for this great idea
    Phil
    GeneralWindows CE Pin
    João Paulo Figueira11-Sep-03 2:53
    memberJoão Paulo Figueira11-Sep-03 2:53 
    GeneralCBITMAPDC Pin
    Maverick1-Jan-02 4:00
    memberMaverick1-Jan-02 4:00 
    GeneralSame thing using CMemDC... Pin
    Anonymous19-Aug-01 22:14
    memberAnonymous19-Aug-01 22:14 
    QuestionHow can i do it Pin
    Yoo28-Sep-00 17:27
    sussYoo28-Sep-00 17:27 
    AnswerRe: How can i do it Pin
    Anneke Sicherer-Roetman28-Sep-00 23:52
    memberAnneke Sicherer-Roetman28-Sep-00 23:52 
    GeneralRe: How can i do it - bugfix Pin
    Anonymous27-May-03 9:25
    sussAnonymous27-May-03 9:25 
    GeneralRe: How can i do it - bugfix Pin
    Anneke Sicherer-Roetman27-May-03 20:57
    memberAnneke Sicherer-Roetman27-May-03 20:57 
    GeneralRe: How can i do it - bugfix Pin
    BarryHolleran17-Feb-04 4:56
    memberBarryHolleran17-Feb-04 4:56 
    GeneralRe: How can i do it - bugfix Pin
    BarryHolleran17-Feb-04 5:01
    memberBarryHolleran17-Feb-04 5:01 
    GeneralRe: How can i do it - bugfix Pin
    Wolfgang Kleinschmit5-Apr-04 23:21
    memberWolfgang Kleinschmit5-Apr-04 23:21 
    GeneralRe: How can i do it Pin
    JHAKAS17-Apr-04 20:50
    memberJHAKAS17-Apr-04 20:50 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Terms of Use | Mobile
    Web03 | 2.8.150804.2 | Last Updated 25 Nov 1999
    Article Copyright 1999 by Anneke Sicherer-Roetman
    Everything else Copyright © CodeProject, 1999-2015
    Layout: fixed | fluid