拷贝屏幕到控件上,发现严重失真(SetStretchBltMode(HALFTONE)无用)
屏幕到控件上,发现严重失真(SetStretchBltMode(HALFTONE)无用,代码如下:
CDC screenDC,memdc;
HBITMAP hBitmap;
int cx,cy;
cx = GetSystemMetrics(SM_CXSCREEN);
cy = GetSystemMetrics(SM_CYSCREEN);
screenDC.CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
memdc.CreateCompatibleDC(&screenDC);
hBitmap = CreateCompatibleBitmap(screenDC,cx,cy);
SelectObject(memdc,hBitmap);
BitBlt(memdc,0,0,cx,cy,screenDC,0,0,SRCCOPY);
CStatic *picctl = (CStatic*)GetDlgItem(IDC_STATIC1);
//picctl->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
CRect rect;
picctl->GetClientRect(&rect);
CBitmap bit;
bit.Attach(hBitmap);
BITMAP bmpinfo;
bit.GetBitmap(&bmpinfo);
CDC picctldc;
picctldc.CreateCompatibleDC(picctl->GetDC());
picctldc.SelectObject(&bit);
picctl->GetDC()->SetStretchBltMode(HALFTONE);//这句似乎没有作用
picctl->GetDC()->StretchBlt(rect.top,rect.left,rect.Width(),rect.Height(),&memdc,0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,SRCCOPY);