Click here to Skip to main content
Click here to Skip to main content

CBitmapDC - An automatic memory DC wrapper

By , 24 Nov 1999
 
  • Download demo project - 18 Kb
  • Download source - 5 Kb
  • 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
    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

    About the Author

    Anneke Sicherer-Roetman
    Web Developer
    Netherlands Netherlands
    Member
    No Biography provided

    Sign Up to vote   Poor Excellent
    Add a reason or comment to your vote: x
    Votes of 3 or less require a comment

    Comments and Discussions

     
    You must Sign In to use this message board.
    Search this forum  
        Spacing  Noise  Layout  Per page   
    GeneralRe: How can i do it - bugfixsussAnonymous27 May '03 - 9:25 
    This is wrong:
     
    CDC& ncDC = const_cast(DC);
     
    And should be
     
    CDC& ncDC = const_cast(DC);

    GeneralRe: How can i do it - bugfixmemberAnneke Sicherer-Roetman27 May '03 - 20:57 
    Anonymous wrote:
    This is wrong:
     
    CDC& ncDC = const_cast(DC);
     
    And should be
     
    CDC& ncDC = const_cast(DC);

     
    I don't see the difference in the wrong and the right line!
    Confused | :confused:
    GeneralRe: How can i do it - bugfixmemberBarryHolleran17 Feb '04 - 4:56 
    I agree that there is no differance in the right and wrong code, however I had a problem compiling the code at this line and I think it should be.
     

    CDC& ncDC = const_cast(DC);
     

    If I am wrong please correct me. But it does now compile.
    GeneralRe: How can i do it - bugfixmemberBarryHolleran17 Feb '04 - 5:01 
    I can now see the problem, it has lost some of the code i posted, as I think happened to the original post.
    I will try to clarify
     
    should be "CDC& ncDC = const_cast" then "" then "(DC);"
     
    The bit in the middle should read, "Less then symbol CDC Ampersand symbol Greater then symbol"
     
    I will try the whole line in quotes, i think it is because it treats it as an HTML tag.
     
    should be "CDC& ncDC = const_cast(DC);"
     
    hope this helps.Big Grin | :-D
    GeneralRe: How can i do it - bugfixmemberWolfgang Kleinschmit5 Apr '04 - 23:21 
    What about this:
    CDC& ncDC = const_cast<CDC&>(DC);
    GeneralRe: How can i do itmemberJHAKAS17 Apr '04 - 20:50 
    Thanks a lot for your quite usefule code and suggestion.
    Well i was fixed up in how to convert the CDC content to Bmp file. well this code piece does solve the problem
     
    Can you help me in understand the code
     
    NOTE:
    My bmp file is taking 2/3 rd part of page only
    My dimensions of bmp are 860*1100
     
    I am using ImageHandler library to convert the cdc to JPEG , here also i pass CDC only and it makes jpeg which takes complete page.
     

    Well can you help me out to make the bitmap file also filling up the complete page
     
    Thanks again
     
    Leave your mark wherever you go

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

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