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 its 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 imageRECT 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
