【发布时间】:2018-02-19 18:27:07
【问题描述】:
我正在尝试为“SMB”文件创建预览,其中它是一种可以使用 AutoCAD 生成的图像,我必须将此图像加载到具有 100 宽度和 100 高度的CRect 中。
但是,此图像具有高分辨率,并且其中包含一条非常小的鱼。
创建预览时,仅显示空白。在图像具有合理尺寸的其他情况下,它会正确显示。
我想知道如何缩放图像,以一种可以放大图像中心并丢失其余部分的方式,只是为了将其保持在宽度为 100 的 CRect 对象的范围内和 100 的高度。
这是我目前使用的代码:
HBITMAP hBitmap;
hBitmap = CreateDIBitmap(pDc->m_hDC,
&EnteteSymb.BitmapInfoHeader,
(LONG)CBM_INIT,
EnteteSymb.BitmapData,
(LPBITMAPINFO)&EnteteSymb.BitmapInfoHeader,
DIB_RGB_COLORS);
CDC DCMem;
DCMem.CreateCompatibleDC(pDc);
DCMem.SelectObject(hBitmap);
int X = Rect.left + MARGES_X;
int Y = Rect.top + MARGES_Y;
int Width = Rect.right - Rect.left - ( 2 * MARGES_X );
int Height = ( Rect.bottom ) - ( Rect.top + MARGES_Y ) - 1;
pDc->StretchBlt( X, Y, Width, Height, &DCMem, 0, 0, 100, 100, SRCCOPY);
DCMem.DeleteDC();
DeleteObject(hBitmap);
【问题讨论】: