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);
本来想在一图像控件上显示桌面,但结果是一片黑,?这是为什么,要怎么样做呢?
展开
 我来答
ysh252540233
2011-04-09
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
你的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属性的~ 祝你好运~
追问
经过尝试,好了,谢谢	
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);
hlm123yy
2011-04-09 · TA获得超过116个赞
知道答主
回答量:94
采纳率:0%
帮助的人:78.2万
展开全部
没有加载图片
更多追问追答
追问
我的目的就是显示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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式