如何在mfc dialog 里动态显示位图 ?

klkvc386 2009-03-31 12:22:43
如何在mfc dialog 里动态显示位图
...全文
287 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwx300 2009-04-01
  • 打赏
  • 举报
回复
dcMem.CreateCompatibleDC(pDC)? //如果使用 GetDC 要调用 ReleaseDC 。

lwx300 2009-04-01
  • 打赏
  • 举报
回复
试试为对话框添加 WS_CLIPCHILDREN 风格。
klkvc386 2009-04-01
  • 打赏
  • 举报
回复
up
klkvc386 2009-04-01
  • 打赏
  • 举报
回复
试试为对话框添加 WS_CLIPCHILDREN 风格。

正解!
谢谢了 !
结贴!
klkvc386 2009-03-31
  • 打赏
  • 举报
回复
如果是做个小游戏,最好是专门建一个类,然后在类里创建一个兼容内存DC,然后在创建一个窗口大小的位图选进去,然后在这个DC上绘图,相应OnPaint,把内存DC内容渲染到DC中去,这样还无闪烁。再加个定时器来定时让窗口重绘。

你的意思是不是用这方法绘图??


CDC dcMem;
CBitmap bm;

使用:
dcMem.CreateCompatibleDC(GetDC()); //创建兼容DC
bm.CreateCompatibleBitmap(pDC,600,470); //创建兼容bmp,注意用pDC而不是dcMem,否则只能画黑白图
dcMem.SelectObject(&bm);
dcMem.SelectObject(new CBrush(RGB(255, 0, 0)));

//在内存兼容DC绘图开始
dcMem.Rectangle(0, 0, 600, 470);
dcMem.MoveTo(0,0);
dcMem.LineTo(100,100);
//在内存兼容DC绘图结束


//输出屏幕
pDC->BitBlt(0,0,600,470,&dcMem,0,0,SRCCOPY);
cnzdgs 2009-03-31
  • 打赏
  • 举报
回复
例如在内存中保存位图信息和数据,响应WM_PAINT消息用SetDIBitsToDevice显示,需要改变图象时直接修改图象数据,然后Invalidate。
路人乙2019 2009-03-31
  • 打赏
  • 举报
回复
兄弟可以去买本书看看.
biweilun 2009-03-31
  • 打赏
  • 举报
回复
建议LZ 学习一些GDI 的基础知识
Starmean 2009-03-31
  • 打赏
  • 举报
回复
如果是做个小游戏,最好是专门建一个类,然后在类里创建一个兼容内存DC,然后在创建一个窗口大小的位图选进去,然后在这个DC上绘图,相应OnPaint,把内存DC内容渲染到DC中去,这样还无闪烁。再加个定时器来定时让窗口重绘。
klkvc386 2009-03-31
  • 打赏
  • 举报
回复
我用上面的方法绘图显示背景和小图时不会闪烁,但是在我把窗口移到屏幕下方再移上来时,窗口上的其它控件会被擦掉,
请问该如何解决这个问题?
IONPhantom 2009-03-31
  • 打赏
  • 举报
回复
你的需求基本上都在GDI操作位图上面,看看有关CBitmap CDC 这几个类,熟悉一下Dialog的绘制方式就可以了,程序逻辑并不复杂
klkvc386 2009-03-31
  • 打赏
  • 举报
回复
不知道有几种可以显示的方法?
我想做个小游戏,比如显示一张背景图 ,显示一些小图从上往下降,按条件让小图消失等什么的
该用到那些知识,没接触过这方面!只要mfc dialog里实现的, 不要用directx 什么的 ,谢谢

19,464

社区成员

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

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