
PAINTSTRUCT ps = {0};
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = ::BeginPaint(m_hWnd, &ps);
HBITMAP hbmp = (HBITMAP)::LoadImage(NULL, _T("D:\\bb\\tu\\1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE| LR_DEFAULTSIZE| LR_CREATEDIBSECTION);
HDC hdcmen= ::CreateCompatibleDC(hdc);//创建内存DC
HBITMAP holdbmp= (HBITMAP)::SelectObject(hdcmen, hbmp);//把位图放到内存DC
BITMAP bmp;
int n = ::GetObject(hbmp, sizeof(BITMAP), &bmp);//获取位图信息
RECT rect;
::GetClientRect(m_hWnd, &rect);//获取窗口客户区的坐标
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
BOOL bb = StretchBlt(hdc,0,0, width, height, hdcmen,0,0,bmp.bmWidth,bmp.bmHeight, SRCCOPY);//把源DC拷贝到目标DC
/*缩放拷贝
参数1:HDC hdcDest 目标DC句柄
参数2:int nXOriginDest 指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标
参数3:int nYOriginDest 指定目标矩形左上角的Y轴坐标,按逻辑单位表示坐标
参数4:int nWidthDest 指定目标矩形的宽度,按逻辑单位表示宽度
参数5:int nHeightDest 指定目标矩形的高度,按逻辑单位表示高度
参数6:HDC hdcSrc 源DC句柄
参数7:int nXOriginSrc 指向源矩形区域左上角的X轴坐标,按逻辑单位表示坐标
参数8:int nYOriginSrc 指向源矩形区域左上角的Y轴坐标,按逻辑单位表示坐标
参数9: int nWidthSrc 指定源矩形的宽度,按逻辑单位表示宽度
参数10:int nHeightSrc 指定源矩形的高度,按逻辑单位表示高度
参数11:DWORD dwRop 指定要进行的光栅操作。光栅操作码定义了系统如何在输出操作中组合颜色,这些操作包括刷子、源位图和目标位图等对象
SRCCOPY:将源矩形区域直接拷贝到目标矩形区域
其它看:https://baike.baidu.com/item/StretchBlt/6377777?fr=aladdin
返回值:如果函数执行成功,那么返回值为非零,如果函数执行失败,那么返回值为零
*/
::SelectObject(hdcmen, holdbmp);
DeleteObject(hdcmen);
::EndPaint(m_hWnd, &ps);
break;
}
