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

CPicture - The Yovav (Horror) PictureShow

By , 18 Jun 2003
 

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)

About the Author

Yovav
CEO MicroMighty, Inc.
United States United States
Member
CEO and founder of MicroMighty, Inc.
 
MicroMighty, Inc. - Software products, ASP.NET Components for developers, Social network services and more!

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   
Questioncan any body encapsulates all this heap of code in one class usable with dialogbox controlmemberblackhack500015 Nov '10 - 19:05 
Generalimage in case of dialog box appsmemberSadru1 Mar '09 - 20:29 
QuestionHow to rotate ?memberhujunxi8 May '08 - 16:04 
GeneralJust one wordmemberDemian Panello7 Jun '07 - 15:17 
GeneralThanksmemberKaworu221 Mar '06 - 22:34 
QuestionHow do i use it for IDC_STATIC control?memberetboite10 Nov '05 - 22:05 
AnswerRe: How do i use it for IDC_STATIC control?memberK(arl)23 Feb '06 - 20:56 
AnswerRe: How do i use it for IDC_STATIC control?memberserup18 Sep '08 - 3:52 
GeneralDisplaying big images (need ScrollBar)memberangel42018 Aug '05 - 13:27 
QuestionPixel value ?memberangel42017 Aug '05 - 13:42 
AnswerRe: Pixel value ?memberChristian Graus17 Aug '05 - 14:39 
GeneralRe: Pixel value ?memberangel42018 Aug '05 - 13:01 
GeneralNice ClassmemberThatsAlok8 Jun '05 - 19:05 
GeneralCPicture to HBITMAPmembernaragana23 May '05 - 15:36 
GeneralRe: CPicture to HBITMAPmemberThatsAlok20 Jun '05 - 0:46 
Generalbug in CPictureShowDoc::CreateFilesListsussshay cohen4 Apr '05 - 22:22 
GeneralHelp!!!!!membersubbuviv30 Mar '05 - 23:24 
Generalchange pictures in Dialogmemberolis7 Feb '05 - 4:31 
GeneralRotating an ImagememberAlex Evans3 Jan '05 - 16:42 
GeneralRe: Rotating an ImagememberEinsteinJ25 Sep '05 - 23:53 
GeneralLoading a picture from an ftp sitememberrgarf3 Sep '04 - 3:48 
Generalproblem in image compression in databasememberKRANTHI KUMAR KUKKALA31 Aug '04 - 3:45 
Questionhow to get image data as pixels?membersgorgulu23 Aug '04 - 3:15 
Generalhelloo sir one problemmemberThatsAlok17 Jul '04 - 0:52 
GeneralIPictute and HBitmapmemberMirikos22 Jun '04 - 10:25 

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

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