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:
CPreviewRect m_bitmap;
In your FileOpen handler:
CFileDialog dlg(TRUE, 0, 0, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,
"Bitmaps (.bmp)|*.bmp|All files(*.*)|*.*||");
if (dlg.DoModal() == IDCANCEL) return;
m_bitmap.LoadBitmap(dlg.GetPathName());
if (!m_bitmap.IsInitialized())
{
m_bitmap.LoadBitmap(IDB_BLUESCREEN);
}
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)
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.