基于对话框,CDC画图被遮盖问题,求指点

baddy1211 2013-06-19 11:37:06
在OnInitDialog里,使用CBitmapButton 关联了一个按钮ID,并设置了图片
然后在OnPaint函数里 我需要在这个按钮图片上再继续画一些我需要的东西


CDC MemDC;
MemDC.CreateCompatibleDC(pDC); //pDC
MemDC.SelectObject(&bmp); // 这个bmp是我需要画的资源

pDC->BitBlt(x,y,16,16,&MemDC, xS, yS, SRCCOPY);
//如果X,Y坐标不在按钮所在范围,可以正常画出我需要的的东西
//但是我需要在CBitmapButton 的背景图上画 被遮盖了


请问这个问题如何解决?网上有的说因为先画的会被后画的覆盖
是不是真的是这个问题?
...全文
178 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2013-06-20
  • 打赏
  • 举报
回复
从 CBitmapButton 派生一个类 在这个类的WM_PATIN中绘制
baddy1211 2013-06-20
  • 打赏
  • 举报
回复
谢谢各位帮助 已经派生CBitmapButton的DrawItem方法处理 可以实现效果了
sumos 2013-06-20
  • 打赏
  • 举报
回复
在OnPaint中先调用CBitmapButton::OnPaint(); 然后再做自己的绘制
baddy1211 2013-06-20
  • 打赏
  • 举报
回复
引用 2 楼 u010588063 的回复:
你这样就想你说的会遮盖的,你贴图不要在Onpain或者Ondraw里面,在onerasebkgnd里面进行绘制位图,并在按钮按下去的时候调用Invalidate进行重绘
在onerasebkgnd这个函数里 还是不能实现
baddy1211 2013-06-20
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
从 CBitmapButton 派生一个类 在这个类的WM_PATIN中绘制
好吧 我试试派生这个类看看
worldy 2013-06-20
  • 打赏
  • 举报
回复
CBitmapButton 创建一个派生类,编写OnDraw
u010588063 2013-06-20
  • 打赏
  • 举报
回复
你这样就想你说的会遮盖的,你贴图不要在Onpain或者Ondraw里面,在onerasebkgnd里面进行绘制位图,并在按钮按下去的时候调用Invalidate进行重绘

15,980

社区成员

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

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