一、 BitBlt
函数原型:
BOOL CDC::BitBlt(
int x, // 目标矩形区域左上角x坐标
int y, // 目标矩形区域左上角y坐标
int nWidth, // 源矩形区域和目标矩形区域宽度
int nHeight, // 源矩形区域和目标矩形区域高度
CDC* pSrcDC, // 源设备环境句柄
int xSrc, // 源矩形区域左上角x坐标
int ySrc, // 源矩形区域左上角y坐标
DWORD dwRop // 一般为SRCCOPY
);
功能:
从源设备环境拷贝位图,不具有缩放功能。
从pSrcDC所指向的源设备环境中,拷贝矩形区域(以xSrc, ySrc为左上角,宽为nWidth,高为nHeight)中的位图,到x,y位置。
示例:
CDC dc;
CBitmap bitmap;
......
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
dc.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBitmap);
二、 StretchBlt
函数原型:
BOOL CDC::StretchBlt(
int x, // 目标矩形区域左上角x坐标
int y, // 目标矩形区域左上角y坐标
int nWidth, // 目标矩形区域宽度
int nHeight, // 目标矩形区域高度
CDC* pSrcDC, // 源设备环境句柄
int xSrc, // 源矩形区域左上角x坐标
int ySrc, // 源矩形区域左上角y坐标
int nSrcWidth, // 源矩形区域宽度
int nSrcHeight, // 源矩形区域高度
DWORD dwRop // 一般为SRCCOPY
);
功能:
从源设备环境拷贝位图,具有缩放功能。
从pSrcDC所指向的源设备环境中,拷贝矩形区域(以xSrc, ySrc为左上角,宽为nSrcWidth,高为nSrcHeight)中的位图,到当前设备环境中的矩形区域(以x,y为左上角,宽为nWidth,高为nHeight)。
源矩形区域的大小和目标矩形区域的大小决定了缩放的比例。
示例:
CDC dc;
CBitmap bitmap;
......
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
dc.StretchBlt(
0, 0, bmp.bmWidth / 2.0, bmp.bmHeight / 2.0,
&memDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
memDC.SelectObject(pOldBitmap);
源矩形区域的大小为bmp.bmWidth / 2.0, bmp.bmHeight / 2.0
目标矩形区域的大小为bmp.bmWidth, bmp.bmHeight
所以缩放比例为0.5