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

Displaying split Bitmap files

By , 18 Jun 2003
 

Introduction

I was thinking about making a puzzle game. I found in a book, a chapter about using bitmaps, but it was not explained how to display a part of a bitmap, but I knew this was possible. After some searching and reading, I was able to write the CSplitBitmap class.

Using the code

Using the CSplitBitmap class is very simple. Just declare and object.

CSplitBitmap splitobj;

The next thing to do is to load a bitmap image like this:

splitobj.LoadImage("<A href="file:///c://images//foto.jpg">c:\\images\\foto.jpg</A>");
//the next line of code splits the image in 3 x 3 parts. 
//The width and height of these parts are the same
splitobj.SplitBitmap(3,3);

In my example I used the OnDraw() function of the View class to display the image and the other parts.

void CBitmaptestView::OnDraw(CDC* pDC)
{
    CBitmaptestDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here

    CMemDC dc(pDC);

    if(_bmpLoaded)
    {
        //this function is used to display the whole image
        _obj.DrawEntireBitmap(dc,10,300);
        // there the different parts of the 
        //splitted image are drawn in the window
        _obj.DrawPartOfBitmap(dc,10,10,1,1);
        // part 2,1
        _obj.DrawPartOfBitmap(dc,80,10,2,1);
        // part 3,1
        _obj.DrawPartOfBitmap(dc,150,10,3,1);
        //...
        _obj.DrawPartOfBitmap(dc,10,80,1,2);
        _obj.DrawPartOfBitmap(dc,80,80,2,2);
        _obj.DrawPartOfBitmap(dc,150,80,3,2);
        _obj.DrawPartOfBitmap(dc,10,150,1,3);
        _obj.DrawPartOfBitmap(dc,80,150,2,3);
        _obj.DrawPartOfBitmap(dc,150,150,3,3);

        // here we select a part of the picture. 300 and 10 are 
        // the x- and y-coordinates of the picture 
        // in the view-window
        // 100 and 100 are the coordinates of the 
        // TopLeft-point were the part starts
        // 30 and 30 are the width and height of the selected part
        _obj.DrawCustomBMP(dc,300,10,100,100,30,30);

    }

    dc.TextOut(_mouseLoc.x,_mouseLoc.y,
        "press left mousebutton to load a bmp-file");
}

Some other functions:

  • long GetBMPHeight(): returns the height of the loaded image.
  • long GetBPWidth(): returns the width of the loaded image.

Conclusion

For the future I was thinking about adding some member functions to alter the width and height of a bitmap. I still didn't figured out how to do it, but I'm sure I can. :p

Acknowledgement

I want to thank Keith Rule because I used his CMemDC class to stop the flickering of the view-window of my demo application.

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

Franske
Web Developer
Belgium Belgium
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

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Generaldisply imagememberSonipriya14 Feb '07 - 2:52 
GeneralRe: disply imagemvptoxcct14 Feb '07 - 9:21 
QuestionHow to copy the new Splited part to CBitmap or HBITMAP ?memberManni Singh8 Dec '06 - 18:44 
Questionhow can a polygon part of a bitmap be shownmemberbestwsfz3j18 Dec '05 - 21:55 
GeneralDisplaying split Bitmap filesmembergommir9 May '05 - 3:59 
Generalsplit windowsussJC Tan4 Jan '04 - 7:31 
GeneralNeeds to be tidied up a bit.memberWREY22 Jun '03 - 3:12 

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

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 19 Jun 2003
Article Copyright 2003 by Franske
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid