怎样在位图上绘图

天涯洪七公 2013-01-16 10:56:47
在MFC对话框中,我用picture控件插入了一副位图,然后需要在这个位图上绘制另一个位图,但是绘制后总是被插入的那个位图遮挡住,请问怎么才能实现在这个位图上实现绘图而不被遮挡住。
...全文
183 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2013-01-16
  • 打赏
  • 举报
回复
你在对话框上绘图,自然会被子窗口挡住了。 所以不要直接用picture插入图片,picture只用来确定位置就行了。 双缓存,这个满大街都有方法......
天涯洪七公 2013-01-16
  • 打赏
  • 举报
回复
引用 楼主 yh_1108 的回复:
在MFC对话框中,我用picture控件插入了一副位图,然后需要在这个位图上绘制另一个位图,但是绘制后总是被插入的那个位图遮挡住,请问怎么才能实现在这个位图上实现绘图而不被遮挡住。 mfc 位图上画图
然后我在onpaint里面直接绘制出那个位图,但也是被遮挡啊,还是不行,有人说要我用双缓冲去做,不用picture控件添加,那样我也准备试试,但不会双缓冲
快乐鹦鹉 2013-01-16
  • 打赏
  • 举报
回复
那就别直接插入位图,都用绘制来实现。按照你希望的顺序进行绘制。
jimette 2013-01-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/liu_chulong/article/details/1687031 你看下这个
天涯洪七公 2013-01-16
  • 打赏
  • 举报
回复
引用 4 楼 sha_jinhao 的回复:
双缓冲不是很简单 就是用memdc就可以了!
CPaintDC dc(GetDlgItem(IDB_BITMAP1)); BITMAP bm; CBitmap bmp;//定义CBitmap 类的对象 if(Current_Side == 1) { bmp.LoadBitmap(IDB_BITMAP3);//装入ID号为IDB_BITMAP1的位图 } else { bmp.LoadBitmap(IDB_BITMAP4);//装入ID号为IDB_BITMAP1的位图 } CDC memdc;//定义CDC类的对象 CRect rect; memdc.CreateCompatibleDC(&dc); //创建与显示DC相兼容的内存DC bmp.GetBitmap(&bm); CBitmap *bmpold=memdc.SelectObject(&bmp);//将选定的位图选入内存DC this->GetClientRect(&rect); //从内存DC向显示DC复制,rect.left,rect.top为图像左上角的坐标,SRCCOPY表示直接将源位图拷贝到目的位图,不作修改 dc.BitBlt(point.x,point.y,bm.bmWidth,bm.bmHeight,&memdc,0,0,SRCCOPY); if(Current_Side == 1) { Current_Side = 0; } else { Current_Side = 1; } Invalidate(FALSE); 你看我这有什么问题没,先获取的就是插入的背景位图的DC,然后绘上去 但不行啊
yong_f 2013-01-16
  • 打赏
  • 举报
回复
重载picture控件的WM_PAINT消息。在picture控件绘图后再绘你自己的图像就可以了
lm_whales 2013-01-16
  • 打赏
  • 举报
回复
直接在picture控件的DC上绘图!
jimette 2013-01-16
  • 打赏
  • 举报
回复
双缓冲不是很简单 就是用memdc就可以了!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧