Click here to Skip to main content
11,478,174 members (73,937 online)
Click here to Skip to main content

CPicture - The Yovav (Horror) PictureShow

, 18 Jun 2003 CPOL 333.8K 10.3K 101
Rate this:
Please Sign up or sign in to vote.
Routines for displaying image files (.BMP .DIB .EMF .GIF .ICO .JPG .WMF)

After many days of searching (and not finding) a way to load a JPG from a resource and show it on a dialog based application, I decided to take steps

So I created what I call a very simple and useful class, it can easily be implemented by adding it to a project, and you do not have to be a real JPEG freak and invent all header reading from the beginning (it uses the IPicture interface - same way as Internet Explorer does)

About The Project

I was little carried away with this "ACDSee alike" picture viewer, as it was not my main purpose - I did not have the time to make it "perfect", if you feel lucky and want to improve it here and there then please share it with me.

COPYFREE (F) - ALL RIGHTS FREE

class CPicture
{
public:
	void FreePictureData();
	BOOL Load(CString sFilePathName);
	BOOL Load(UINT ResourceName, LPCSTR ResourceType);
	BOOL LoadPictureData(BYTE* pBuffer, int nSize);
	BOOL SaveAsBitmap(CString sFilePathName);
	BOOL Show(CDC* pDC, CPoint LeftTop, CPoint WidthHeight, int MagnifyX,
                  int MagnifyY);
	BOOL Show(CDC* pDC, CRect DrawRect);
	BOOL ShowBitmapResource(CDC* pDC, const int BMPResource, 
                                CPoint LeftTop);
	BOOL UpdateSizeOnDC(CDC* pDC);

	CPicture();
	virtual ~CPicture();
        // Same As LPPICTURE (typedef IPicture __RPC_FAR *LPPICTURE)
	IPicture* m_IPicture; 
	// Height (In Pixels Ignor What Current Device Context Uses)
	LONG m_Height; 	     
        // Size Of The Image Object In Bytes (File OR Resource) 
        LONG m_Weight;	
        // Width (In Pixels Ignor What Current Device Context Uses)
         LONG m_Width;  
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~Example & Usage 4 Dummies~~~~~~~~~~~~~~~~~~~~~~~~
//
//  U Need 2 Add "CPicture.CPP" and "CPicture.H" Into Your Project 
// (From FileView)
//  So U Will Get Control Over The Functions In This Class,
//  Then U Can Create a Picture Object And Show It On a Device Context
//
// Create a Picture Object (An Instance Of This Class)
//  CPicture m_Picture;  

// Make Sure U Include This Where U Gonna Create The Object...
//  #include "Picture.h" 
//  Load Picture Data Into The IPicture Interface 

(.BMP .DIB .EMF .GIF .ICO .JPG .WMF)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// Load From a File - Just Load It (Show Later)
//	m_Picture.Load("Test.JPG"); 
// Load From a Resource - Just Load It (Show Later)
//	m_Picture.Load(IDR_TEST, "JPG"); 

//  (U Must Include IDR_TEST In Your Resources Under a Custom Name, 4 
//   Example - "JPG")
//  
//  When Using DC Object On a *Dialog Based* Application (CPaintDC dc(this);)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	
// Get Picture Dimentions In Pixels
//      m_Picture.UpdateSizeOnDC(&dc); 
//	m_Picture.Show(&dc, CPoint(0,0), 
                       CPoint(m_Picture.m_Width, m_Picture.m_Height), 0,0);
//	
//      Change Original Dimentions
//      m_Picture.Show(&dc, CRect(0,0,100,100)); 

//      Show Bitmap Resource
//	m_Picture.ShowBitmapResource(&dc, IDB_TEST, CPoint(0,0)); 
//
//  OR When Using a Pointer On a "Regular" MFC Application (CDC* pDC)
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	m_Picture.UpdateSizeOnDC(pDC); // Get Picture Dimentions In Pixels
//	m_Picture.Show(pDC, CPoint(0,0),  CPoint
//                     m_Picture.m_Width,m_Picture.m_Height), 0,0);
//      Change Original Dimentions
//	m_Picture.Show(pDC, CRect(0,0,100,100)); 
//      Show Bitmap Resource
//	m_Picture.ShowBitmapResource(pDC, IDB_TEST, CPoint(0,0)); 
//  Show Picture Information
//  ~~~~~~~~~~~~~~~~~~~~~~~~
//	CString S;
//	S.Format("Size = %4d\nWidth = %4d\nHeight = %4d\nWeight = %4d\n",
//	         m_Picture.m_Weight, m_Picture.m_Width, 
//               m_Picture.m_Height,  m_Picture.m_Weight);
//	AfxMessageBox(S);
//

License

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

Share

About the Author

Yovav
CEO People, Inc.
United States United States
CEO and founder of People, Inc.
Follow on   LinkedIn

Comments and Discussions

 
GeneralMy vote of 4 Pin
galuo14-Sep-13 1:21
membergaluo14-Sep-13 1:21 
Questioncan any body encapsulates all this heap of code in one class usable with dialogbox control Pin
blackhack500015-Nov-10 20:05
memberblackhack500015-Nov-10 20:05 
Generalimage in case of dialog box apps Pin
Sadru1-Mar-09 21:29
memberSadru1-Mar-09 21:29 
QuestionHow to rotate ? Pin
hujunxi8-May-08 17:04
memberhujunxi8-May-08 17:04 
GeneralJust one word Pin
Demian Panello7-Jun-07 16:17
memberDemian Panello7-Jun-07 16:17 
GeneralThanks Pin
Kaworu221-Mar-06 23:34
memberKaworu221-Mar-06 23:34 
QuestionHow do i use it for IDC_STATIC control? Pin
etboite10-Nov-05 23:05
memberetboite10-Nov-05 23:05 
AnswerRe: How do i use it for IDC_STATIC control? Pin
K(arl)23-Feb-06 21:56
memberK(arl)23-Feb-06 21:56 
AnswerRe: How do i use it for IDC_STATIC control? Pin
serup18-Sep-08 4:52
memberserup18-Sep-08 4:52 
GeneralDisplaying big images (need ScrollBar) Pin
angel42018-Aug-05 14:27
memberangel42018-Aug-05 14:27 
QuestionPixel value ? Pin
angel42017-Aug-05 14:42
memberangel42017-Aug-05 14:42 
AnswerRe: Pixel value ? Pin
Christian Graus17-Aug-05 15:39
memberChristian Graus17-Aug-05 15:39 
GeneralRe: Pixel value ? Pin
angel42018-Aug-05 14:01
memberangel42018-Aug-05 14:01 
GeneralNice Class Pin
ThatsAlok8-Jun-05 20:05
memberThatsAlok8-Jun-05 20:05 
GeneralCPicture to HBITMAP Pin
naragana23-May-05 16:36
membernaragana23-May-05 16:36 
GeneralRe: CPicture to HBITMAP Pin
ThatsAlok20-Jun-05 1:46
memberThatsAlok20-Jun-05 1:46 
Generalbug in CPictureShowDoc::CreateFilesList Pin
shay cohen4-Apr-05 23:22
sussshay cohen4-Apr-05 23:22 
GeneralHelp!!!!! Pin
subbuviv31-Mar-05 0:24
membersubbuviv31-Mar-05 0:24 
Generalchange pictures in Dialog Pin
olis7-Feb-05 5:31
memberolis7-Feb-05 5:31 
GeneralRotating an Image Pin
Alex Evans3-Jan-05 17:42
memberAlex Evans3-Jan-05 17:42 
GeneralRe: Rotating an Image Pin
EinsteinJ26-Sep-05 0:53
memberEinsteinJ26-Sep-05 0:53 
GeneralLoading a picture from an ftp site Pin
rgarf3-Sep-04 4:48
memberrgarf3-Sep-04 4:48 
Generalproblem in image compression in database Pin
KRANTHI KUMAR KUKKALA31-Aug-04 4:45
memberKRANTHI KUMAR KUKKALA31-Aug-04 4:45 
Questionhow to get image data as pixels? Pin
sgorgulu23-Aug-04 4:15
membersgorgulu23-Aug-04 4:15 
Generalhelloo sir one problem Pin
ThatsAlok17-Jul-04 1:52
memberThatsAlok17-Jul-04 1:52 
GeneralIPictute and HBitmap Pin
Mirikos22-Jun-04 11:25
memberMirikos22-Jun-04 11:25 
GeneralRe: IPictute and HBitmap Pin
mcanti29-May-06 23:05
membermcanti29-May-06 23:05 
GeneralUsing the Show Function not in OnPaint Pin
Jens Lengwenus18-May-04 2:32
memberJens Lengwenus18-May-04 2:32 
GeneralRe: Using the Show Function not in OnPaint Pin
Jens Lengwenus18-May-04 2:51
memberJens Lengwenus18-May-04 2:51 
GeneralThank u for your great article! Pin
eslea26-Apr-04 19:44
membereslea26-Apr-04 19:44 
GeneralSample Demo Pin
alperen11-Jan-04 9:18
memberalperen11-Jan-04 9:18 
GeneralRe: Sample Demo Pin
Yovav11-Jan-04 21:11
memberYovav11-Jan-04 21:11 
GeneralNice to See CPicture still in use Pin
Anonymous23-Dec-03 20:54
sussAnonymous23-Dec-03 20:54 
Generaldetaching a shown image Pin
satadru9-Dec-03 1:42
susssatadru9-Dec-03 1:42 
GeneralRe: detaching a shown image Pin
Yovav9-Dec-03 5:28
memberYovav9-Dec-03 5:28 
QuestionHow can I save a gif as a 24 bit bitmap? Pin
annephilip3-Oct-03 8:36
memberannephilip3-Oct-03 8:36 
AnswerRe: How can I save a gif as a 24 bit bitmap? Pin
Yovav15-Oct-03 0:33
memberYovav15-Oct-03 0:33 
GeneralActiveX control wanted Pin
Xilin26-Aug-03 23:53
memberXilin26-Aug-03 23:53 
GeneralRe: ActiveX control wanted Pin
Yovav27-Aug-03 0:28
memberYovav27-Aug-03 0:28 
QuestionWhen is the picture updated ? Pin
Oliver, an eager novice11-Aug-03 2:51
sussOliver, an eager novice11-Aug-03 2:51 
AnswerThe picture is updated ! Pin
Oliver, now wiser.12-Aug-03 22:50
sussOliver, now wiser.12-Aug-03 22:50 
QuestionHow do I....... Pin
Osrald29-Jul-03 21:03
memberOsrald29-Jul-03 21:03 
GeneralThis is what we call: CPicture Pin
Anonymous20-Jun-03 9:06
sussAnonymous20-Jun-03 9:06 
GeneralRe: This is what we call: CPicture Pin
Yovav20-Jun-03 13:54
memberYovav20-Jun-03 13:54 
GeneralRe: I am NOT Paul. Pin
Anonymous25-Jun-03 9:14
sussAnonymous25-Jun-03 9:14 
GeneralRe: I am NOT Paul. Pin
Yovav25-Jun-03 10:10
memberYovav25-Jun-03 10:10 
Generaldisplay gif image on dialog Pin
jitwadee26-May-03 20:25
memberjitwadee26-May-03 20:25 
GeneralRe: display gif image on dialog Pin
Anonymous26-May-03 21:13
sussAnonymous26-May-03 21:13 
GeneralRe: display gif image on dialog Pin
Yovav26-May-03 21:16
memberYovav26-May-03 21:16 
AnswerRe: Use in OnPaint() function.. Pin
hyungju kim10-Oct-06 21:16
memberhyungju kim10-Oct-06 21:16 

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
Web01 | 2.8.150520.1 | Last Updated 19 Jun 2003
Article Copyright 2001 by Yovav
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid