Click here to Skip to main content
12,748,859 members (40,658 online)
Click here to Skip to main content
Add your own
alternative version


32 bookmarked
Posted 25 Nov 2003

BitMap Contour To Windows Region

, 16 Sep 2005 CPOL
Rate this:
Please Sign up or sign in to vote.
An article on how to generate an outline of a bitmap. Used when designing user shaped dialogs.

Sample screenshot


The CBitmapHandling class was designed to calculate the contour points in a bitmap. It looks at the bitmap and finds pixel points different from white, it then places these start and stop pixel points in a Vertex of CPoint class. When it has found the outline of the bitmap, it then generates a Windows region. If you use this region in your OnInitDialog and then set the window region using SetWindowRgn(m_WinRgn, TRUE ), your window will then be shaped like the outline.

Using the code

The code consists of a header file and a CPP file.

#include "BitMapHandling.h"
using namespace HandlingBitmaps;

BOOL CMyShapedWindowDlg::OnInitDialog()
 VERIFY( SetWindowPos( NULL, 0, 0, m_nW, 
         m_nH, SWP_NOMOVE | SWP_NOOWNERZORDER ) ); // size and pos. of window
         // cut of areas of region, which you do not really need. 
         // fx. maybe you have bitmap buttons drawn under your bitmap window.
 CBitmapHandling bh;
 bh.BitMapContourToWinRgn(&m_WinRgn, IDB_BITMAP);
 VERIFY( SetWindowRgn(m_WinRgn , TRUE ) );

 return TRUE; // return TRUE unless you set the focus to a control


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer (Senior) Nokia
Denmark Denmark
I have been working with languages ranging from assembly 68000 to COBOL, OOC, MySQL, Perl, VC++ MFC and WinSockets.

I am currently working as a senior software architect at Nokia Mobile Phones Denmark

You may also be interested in...

Comments and Discussions

GeneralDemo Project Pin
gancev18-Apr-07 4:14
membergancev18-Apr-07 4:14 
GeneralBitmap Pin
Sangeetha_J25-Jan-07 21:17
memberSangeetha_J25-Jan-07 21:17 
Hi Serup,

I came to know your article while searching for concepts related to contour. Am working as a software engineer in Visual C++ for the past two years. No one is here for me to train. Am reading for myself and doing things as much as my effort makes it possible. Now am in a need to accomplish the following one:

1. I need to show a bitmap in a full screen mode
2. Then i need to scatter that bitmap here and there all over the screen and then have to reassemble it to make it return back to its original form.

I had posted one message asking about this. Then i got the reply to look for finding contours of that bitmap and then to carry on from there. One more reply suggested me to study about 3DMax.

Now i posted this to have your ideas and suggestions. If there any book for me to read and proceed, please refer to me. I am ready to read and implement the procedure.

My email id is

Thanking you,

With Regards,

With Regards,

Generalembedded systems Pin
jamal odibat18-Sep-05 22:05
memberjamal odibat18-Sep-05 22:05 
GeneralBetter solution Pin
serup31-Aug-05 3:15
memberserup31-Aug-05 3:15 
GeneralRe: Better solution Pin
serup31-Aug-05 3:35
memberserup31-Aug-05 3:35 
GeneralSome Bugs Pin
nebbi27-Jan-04 22:47
membernebbi27-Jan-04 22:47 
GeneralRe: Some Bugs Pin
serup28-Jan-04 21:32
memberserup28-Jan-04 21:32 
GeneralA guess (or two) at your low mark... Pin
Iain Clarke26-Nov-03 6:10
memberIain Clarke26-Nov-03 6:10 
GeneralRe: A guess (or two) at your low mark... Pin
Uwe Keim26-Nov-03 6:25
sitebuilderUwe Keim26-Nov-03 6:25 
GeneralRe: A guess (or two) at your low mark... Pin
Iain Clarke26-Nov-03 6:33
memberIain Clarke26-Nov-03 6:33 
GeneralRe: A guess (or two) at your low mark... Pin
serup27-Nov-03 4:38
memberserup27-Nov-03 4:38 
GeneralRe: A guess (or two) at your low mark... Pin
gordon8824-Jul-08 13:50
membergordon8824-Jul-08 13:50 

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.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170215.1 | Last Updated 16 Sep 2005
Article Copyright 2003 by serup
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid