Click here to Skip to main content
Licence 
First Posted 2 Sep 2005
Views 63,068
Bookmarked 49 times

PreviewCtrl

By | 2 Sep 2005 | Article
Showing an image in a CStatic control.

Sample Image - PreviewCtrl.jpg

Introduction

Drawing a CBitmap into a CStatic is a piece of cake. At least if you stop to mess around with CStatic::SetBitmap(). To get some running code, I derived CPreviewRect from CStatic and implemented the display routines manually. This small application demonstrates its usage.

Features

  • The shown images are resizable and always shown in correct aspect ratio.
  • The shown images can be resized to thumbnail size to save up memory and to speed up drawing.
  • The shown images can be specified by:
    • a path name
    • a resource ID
    • another CBitmap
    • raw RGB data (in conjunction with width and height information)
  • Compared to CStatic::SetBitmap() it works.

Background

CStatic::SetBitmap() drove me mad.

Using the code

Guess you have a dialog with a CStatic control on it, and you want to show loaded bitmaps in this control. First of all please make sure that the control's name differs from IDC_STATIC and create a related member variable. Now modify your code as follows:

In your dialog's header file:

// change the control's class from CStatic to CPreviewRect
CPreviewRect m_bitmap;

In your FileOpen handler:

// create your file dialog
CFileDialog dlg(TRUE, 0, 0, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, 
                    "Bitmaps (.bmp)|*.bmp|All files(*.*)|*.*||");

// ask user
if (dlg.DoModal() == IDCANCEL) return;

// load the selected bitmap file
m_bitmap.LoadBitmap(dlg.GetPathName());

// check recent file operation (IsInitialized() should return TRUE)
if (!m_bitmap.IsInitialized())
{
    // load error bitmap from a resource (if you have any)
    m_bitmap.LoadBitmap(IDB_BLUESCREEN);
}

// resize bitmap to save up memory and speed up drawing
m_bitmap.CreateThumbnail(320, 240);

That's it!

History

Version 1.1

Added:

  • BorrowBitmap(CBitmap* pBitmap)

Changed:

  • CreateBitmap(CBitmap* pBitmap) has been renamed to CopyBitmap(CBitmap* pBitmap)

Version 1.0

Added:

  • LoadBitmap(const CString& Path)
  • LoadBitmap(UINT nIDResource)
  • CreateBitmap(CBitmap* pBitmap)
  • CreateBitmap(int Width, int Height, unsigned char* BGRA)
  • CreateThumbnail(int MaxWidth, int MaxHeight)
  • Reset(BOOL GraphicalUpdate = TRUE)

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

Achim Klein

Web Developer

Germany Germany

Member



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

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralOnly horizontal resizing. . PinmemberVarchas R S23:31 27 Nov '08  
General[Message Removed] Pinmemberimmetoz2:01 4 Oct '08  
GeneralThanks a lot! Pinmemberrehanone3:12 17 Jul '08  
Generalthanks !!! Pinmemberjofavi13:57 7 Apr '07  
GeneralWonderful Pinmemberdel Fuego6:31 2 Feb '07  
GeneralSuperb PinmemberExpategghead0:15 6 Mar '06  
GeneralThenk you, PinmemberStaon22:33 15 Jan '06  
QuestionHow to save CBitmap to file Pinmembercaykahve9:39 24 Dec '05  
QuestionWay cool error message/bmp Pinmemberradeutsch2:07 7 Sep '05  
AnswerRe: Way cool error message/bmp PinmemberAchim Klein0:47 8 Sep '05  
GeneralDOxygen Pinmemberthudriact2:08 2 Sep '05  
GeneralRe: DOxygen PinmemberAchim Klein1:27 8 Sep '05  
GeneralIt's simple PinmemberCandleLight6660:58 2 Sep '05  
GeneralThank you! PinmemberMichael Kane0:49 2 Sep '05  

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.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120517.1 | Last Updated 2 Sep 2005
Article Copyright 2005 by Achim Klein
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid