读书人

拷贝银幕到控件上发现严重失真(Set

发布时间: 2013-03-27 11:22:42 作者: rapoo

拷贝屏幕到控件上,发现严重失真(SetStretchBltMode(HALFTONE)无用)
本帖最后由 jinzihan_005 于 2011-04-28 22:04:39 编辑 屏幕到控件上,发现严重失真(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);
[解决办法]
SetStretchBltMode(COLORONCOLOR);

读书人网 >VC/MFC

热点推荐