MFC图像控件显示HDC中位图
HDChdc=::GetDC(NULL)HBITMAPhbitmap=::CreateCompatibleBitmap(hdc,1280,800);((CStatic*)...
HDC hdc=::GetDC(NULL)
HBITMAP hbitmap=::CreateCompatibleBitmap(hdc,1280,800);
((CStatic*)(GetDlgItem(IDC_IMAGE)))->SetBitmap(hbitmap);
本来想在一图像控件上显示桌面,但结果是一片黑,?这是为什么,要怎么样做呢? 展开
HBITMAP hbitmap=::CreateCompatibleBitmap(hdc,1280,800);
((CStatic*)(GetDlgItem(IDC_IMAGE)))->SetBitmap(hbitmap);
本来想在一图像控件上显示桌面,但结果是一片黑,?这是为什么,要怎么样做呢? 展开
2个回答
展开全部
你的hbitmap只是创建的一个和hdc兼容的位图并没有把hdc上的图贴到上面 所以会是黑的 你可以
CDC*pCtrlDC=((CStatic*)(GetDlgItem(IDC_IMAGE)))->GetDC();
pCtrlDC->BitBlt(0,0,300/*你可以设成控件的宽和高*/,300,CDC::FromHandle(hdc),0,0,SRCCOPY);
如果你想用SetBitmap可以先用个中间DC 把hbitmap select到这个DC上然后把hdc贴在上面 再用这个hbitmap就可以了~当然这个静态控件是要有SS_BITMAP属性的~ 祝你好运~
CDC*pCtrlDC=((CStatic*)(GetDlgItem(IDC_IMAGE)))->GetDC();
pCtrlDC->BitBlt(0,0,300/*你可以设成控件的宽和高*/,300,CDC::FromHandle(hdc),0,0,SRCCOPY);
如果你想用SetBitmap可以先用个中间DC 把hbitmap select到这个DC上然后把hdc贴在上面 再用这个hbitmap就可以了~当然这个静态控件是要有SS_BITMAP属性的~ 祝你好运~
追问
经过尝试,好了,谢谢
HDC hdc=::GetDC(NULL);
hbitmap=::CreateCompatibleBitmap(hdc,1280,800);
HDC hMem=::CreateCompatibleDC(hdc);
hOldBmp=(HBITMAP)SelectObject(hMem,hbitmap);
BitBlt(hMem,0,0,1280,800,hdc,0,0,SRCCOPY);
hbitmap=(HBITMAP)SelectObject(hMem,hOldBmp);
((CStatic*)(GetDlgItem(IDC_IMAGE)))->SetBitmap(hbitmap);
展开全部
没有加载图片
更多追问追答
追问
我的目的就是显示hdc的位图,::GetDC(NULL)返回的是桌面HDC
追答
给你个例子
int cx=GetSystemMetrics(SM_CXSCREEN);
int cy=GetSystemMetrics(SM_CYSCREEN);
HDC hScrDC=CreateDC(_T("DISPLAY"),NULL,NULL,NULL);
Graphics graphics1(hScrDC);
Bitmap bmp(cx,cy,&graphics1);
Graphics graphics2(&bmp);
HDC dc1=graphics1.GetHDC();
HDC dc2=graphics2.GetHDC();
BitBlt(dc2,0,0,cx,cy,dc1,0,0,13369376);
graphics1.ReleaseHDC(dc1);
graphics2.ReleaseHDC(dc2);
Graphics graphics(m_hWnd);
int width=bmp.GetWidth();
int height=bmp.GetHeight();
graphics.DrawImage(&bmp,0,0,width,height);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询