新手求教屏幕抓取问题
我有一个抓取当前屏幕的代码,但抓出来的图像保存成文件时太大了(为3M),想把它变小一点。不抓那么多的数据。请问有什么好办法
代码如下:
CDC dc;//屏幕DC
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
// CDC *dc=GetDC();
CBitmap bm;//创建位图
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;//内存位图
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
bm.GetBitmap(&btm);//保存信息至btm
size=btm.bmWidthBytes*btm.bmHeight;
lpData=new char[size]; //图像数据
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
///////////////////////////////////
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
保存以后lpData为1024*768*4字节啊……晕