您的位置:首页 > 其它

改变bitmap大小的函数

2009-07-08 16:49 323 查看
BOOL TranslateBitmapSize(
IN HDC hCurScreemDC,	//当前屏幕DC,可通过GetDC获得
IN HBITMAP hBmpSrc,	//原BITMAP句柄
IN int nSrcWidth,		//原BITMAP的宽度
IN int nSrcHeight,		//原BITMAP的高度
OUT HBITMAP &hBmpDst,	//改变大小后的BITMAP的句柄
IN int nDstWidth,		//改变大小后的BITMAP的宽度
IN int nDstHeight		//改变大小后的BITMAP的高度
)
{
if (hBmpSrc == NULL || hCurScreemDC == NULL)
{
return FALSE;
}
if (hBmpDst != NULL)
{
DeleteObject(hBmpDst);
}
HDC hOldSrcDC = NULL;
HDC hOldDstDC = NULL;
HDC hSrcDC = CreateCompatibleDC(hCurScreemDC);
HDC hDstDC = CreateCompatibleDC(hCurScreemDC);
hBmpDst = CreateCompatibleBitmap(hCurScreemDC,nDstWidth,nDstHeight);
hOldSrcDC = (HDC)SelectObject(hSrcDC,hBmpSrc);
hOldDstDC = (HDC)SelectObject(hDstDC,hBmpDst);
StretchBlt(hDstDC,0,0,nDstWidth,nDstHeight,hSrcDC,0,0,nSrcWidth,nSrcHeight,SRCCOPY);
SelectObject(hSrcDC,hOldSrcDC);
SelectObject(hDstDC,hOldDstDC);
DeleteObject(hSrcDC);
DeleteObject(hDstDC);
return TRUE;
}


原理:

创建两个与当前屏幕DC兼容的DC,创建一个与当前屏幕兼容的位图句柄,把两个位图句柄分别选入两个兼容DC,然后通过StretchBlt函数进行DC拷贝,目的位图句柄就获得了改变后的位图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: