Fitting an Image to a Window

If you are using the high-level LBitmapWindow (or derived) class, you can use the LBitmapWindow::SetZoomMode function to zoom an image in the following manners:


to fit the bitmap in the window while maintaining the aspect ratio.


to stretch the bitmap to the window.


to display the bitmap in its normal size.


to fit the bitmap to the width of the window.


to fit the bitmap to the height of the window.

You can also use LBitmapWindow::FitToParent to fit the class object's window to it's parent.

If you are not using LBitmapWindow, to fit an image to a window, you only have to calculate a display rectangle that fits the window's client area, while preserving the image's aspect ratio. The following code snippets show how this can be done.

LBitmapBase LeadBitmap; //bitmap for the loading image 
RECT rWndSize; 
RECT rClientSize; 
RECT rLeadDest; 
L_INT WidthAllowed; 
L_INT HeightAllowed; 
L_INT WidthFactor; 
L_INT HeightFactor; 
L_INT Left, Top, Width, Height; 
L_INT nRet; 
/* Load the LEAD DLLs */ 
LBase LeadBase; 
/* Load an image */ 
nRet = LeadBitmap.Load(TEXT("v:\\images\\eagle.cmp"), 8); 
/* Get the current window size and client area */ 
::GetWindowRect(this->m_hWnd, &rWndSize); 
/* Use this to fit the displayed image in the client area. */ 
WidthAllowed = rClientSize.right; 
HeightAllowed = rClientSize.bottom; 
WidthFactor = LeadBitmap.GetWidth(); 
HeightFactor = LeadBitmap.GetHeight(); 
/* See if using the maximum width will make the image too tall */ 
if(MulDiv(WidthAllowed, HeightFactor, WidthFactor) < HeightAllowed) 
{ /* Use the maximum width, and calculate the height and top values */ 
   Left = 0; 
   Width = WidthAllowed; 
   Height = MulDiv(Width, HeightFactor, WidthFactor); 
   Top = 0; 
   /* Use the maximum height, and calculate the width and left values */ 
   Top = 0; 
   Height = HeightAllowed; 
   Width = MulDiv(Height, WidthFactor, HeightFactor); 
   Left = 0; 
RECT rc; 
/* Set the source rectangle to use the whole bitmap */ 
SetRect(&rc, 0, 0, LeadBitmap.GetWidth(), LeadBitmap.GetHeight()); 
/* Set the source clipping rectangle to use the whole bitmap */ 
/* Set the destination rectangles */ 
SetRect(&rLeadDest, Left, Top, Width, Height); 
/* paint the image */ 
HDC hDC = ::GetDC(this->m_hWnd); 
::ReleaseDC(this->m_hWnd, hDC); 

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Raster Imaging C++ Class Library Help