首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

拷贝银幕到控件上,发现严重失真(SetStretchBltMode(HALFTONE)无用)

2013-03-27 
拷贝屏幕到控件上,发现严重失真(SetStretchBltMode(HALFTONE)无用)本帖最后由 jinzihan_005 于 2011-04-28

拷贝屏幕到控件上,发现严重失真(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);

热点排行