Click here to Skip to main content
15,886,110 members
Articles / Desktop Programming / MFC
Article

Displaying split Bitmap files

Rate me:
Please Sign up or sign in to vote.
3.10/5 (10 votes)
18 Jun 2003 79.6K   3.5K   33   7
CSplitBitmap is a Class to load, split and display BMP files

Image 1

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


Written By
Web Developer
Belgium Belgium
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Generaldisply image Pin
Sonipriya14-Feb-07 2:52
Sonipriya14-Feb-07 2:52 
GeneralRe: disply image Pin
toxcct14-Feb-07 9:21
toxcct14-Feb-07 9:21 
QuestionHow to copy the new Splited part to CBitmap or HBITMAP ? Pin
MacGadger8-Dec-06 18:44
MacGadger8-Dec-06 18:44 
Questionhow can a polygon part of a bitmap be shown Pin
bestwsfz3j18-Dec-05 21:55
bestwsfz3j18-Dec-05 21:55 
GeneralDisplaying split Bitmap files Pin
gommir9-May-05 3:59
gommir9-May-05 3:59 
Generalsplit window Pin
Caroline Tan4-Jan-04 7:31
Caroline Tan4-Jan-04 7:31 
how can i display a 3d image in 4 smaller split windows (like in 3d studio max)?
GeneralNeeds to be tidied up a bit. Pin
WREY22-Jun-03 3:12
WREY22-Jun-03 3:12 

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

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