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:
Zoom Mode | Description |
---|---|
ZOOM_FIT | to fit the bitmap in the window while maintaining the aspect ratio. |
ZOOM_STRETCH | to stretch the bitmap to the window. |
ZOOM_NORMAL | to display the bitmap in its normal size. |
ZOOM_FITWIDTH | to fit the bitmap to the width of the window. |
ZOOM_FITHEIGHT | 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;
LeadBase.LoadLibraries(LT_ALL_LEADLIB);
/* 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);
::GetClientRect(this->m_hWnd,&rClientSize);
/* 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;
}
else
{
/* 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());
LeadBitmap.SetSrcRect(&rc);
/* Set the source clipping rectangle to use the whole bitmap */
LeadBitmap.SetClipSrcRect(&rc);
/* Set the destination rectangles */
SetRect(&rLeadDest, Left, Top, Width, Height);
LeadBitmap.SetDstRect(&rLeadDest);
LeadBitmap.SetClipDstRect(&rLeadDest);
/* paint the image */
HDC hDC = ::GetDC(this->m_hWnd);
LeadBitmap.Paint()->SetDC(hDC);
LeadBitmap.Paint()->PaintDC();
::ReleaseDC(this->m_hWnd, hDC);
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.