15,979
社区成员
发帖
与我相关
我的任务
分享
//获取屏幕截图
CImage old_image;
HWND hWnd = ::GetDesktopWindow();//获得屏幕的HWND.
HDC hScreenDC = ::GetDC(hWnd); //获得屏幕的HDC.
HDC MemDC = CreateCompatibleDC(hScreenDC);
RECT rect;
::GetWindowRect(hWnd,&rect);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC,rect.right,rect.bottom);
HGDIOBJ hOldBMP = SelectObject(MemDC,hBitmap);
BitBlt(MemDC,0,0,rect.right,rect.bottom,hScreenDC,rect.left,rect.top,SRCCOPY);
hBitmap=(HBITMAP)SelectObject(MemDC,hOldBMP);
old_image.Attach(hBitmap);
//压缩图像
CImage new_image;
CRect new_rect(0,0,width,height);
new_image.Create(width, height,bpp);//bpp为需要变化的色深大小 当bpp=8时会变成全黑
SetStretchBltMode(new_image.GetDC(), HALFTONE);
new_image.ReleaseDC();
old_image.StretchBlt(new_image.GetDC() , new_rect);
new_image.ReleaseDC();