1、复制Icon(并拉伸)
//
// 伸缩图标,指定图标的长和宽
//
HICON StretchIcon(HICON hIcon, int iWidth, int iHeight)
{
HICON hTempIcon;
HDC hdc = GetDC(NULL);
//建立一个兼容DC,用于作图
HDC hMemDc = CreateCompatibleDC(hdc);
//注意,这里的参数dc不能为兼容dc,否则就是单色位图
HBITMAP hMemBmp = (HBITMAP)CreateCompatibleBitmap(hdc, iWidth, iHeight);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hMemDc, hMemBmp);
HBRUSH br = (HBRUSH)GetStockObject(WHITE_BRUSH);
RECT rect;
rect.left = 0;
rect.right = iWidth;
rect.top = 0;
rect.bottom = iHeight;
SelectObject(hMemDc, br);
FillRect(hMemDc, &rect, br);
// 画图标
DrawIconEx(hMemDc, 0, 0, hIcon, iWidth, iHeight, 0, NULL, DI_NORMAL);
//保持图片
SelectObject(hMemDc, hOldBmp);
ICONINFO info;
info.fIcon = TRUE;
info.hbmMask = CreateBitmap(iWidth, iHeight, 1, 1, NULL);
info.hbmColor = hMemBmp;
// 创建图标
hTempIcon = CreateIconIndirect(&info);
// 清除资源
DeleteObject(info.hbmMask);
info.hbmMask = NULL;
DeleteObject(hMemBmp);
hMemBmp = NULL;
DeleteDC(hMemDc);
hMemDc = NULL;
ReleaseDC(NULL, hdc);
hdc = NULL;
return hTempIcon;
}
2、复制Bitmap
HBITMAP CopyBitmap( HBITMAP hbm) {
HDC hdcSrc = CreateCompatibleDC(NULL);
HDC hdcDst = CreateCompatibleDC(NULL);
HBITMAP hbmOld, hbmOld2, hbmNew;
BITMAP bm;
GetObject(hbm, sizeof(bm), &bm);
hbmOld = SelectObject(hdcSrc, hbm);
hbmNew = CreateBitmap( bm.bmWidth, bm.bmHeight, bm.bmPlanes,
bm.bmBitsPixel,
NULL);
hbmOld2 = SelectObject(hdcDst, hbmNew);
BitBlt(hdcDst, 0, 0, bm.bmWidth, bm.bmHeight, hdcSrc, 0, 0, SRCCOPY);
SelectObject(hdcSrc, hbmOld);
DeleteDC(hdcSrc);
DeleteDC(hdcDst);
return hbmNew;
}