如何解决在ListControl上绘图占有内存过多导致的卡顿问题

qq_29720391 2019-09-10 09:25:55
如题,现在已重载ListControl控件的DrawItem消息并在其上面绘制某些图形,采用的是GDI描点绘制的模式,设置了Listcontrol本身自带的一个双缓冲绘制方式。SetExtendedStyle(LVS_EX_DOUBLEBUFFER ); 但当图形比较复杂时,绘图会占有过多内存导致界面卡顿的问题,求问如何解决这种问题?
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大树学长 2019-09-10
  • 打赏
  • 举报
回复
看看是否有内存泄漏的现象,内存泄漏会导致画图越来越卡顿
qq_29720391 2019-09-10
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
不建议使用GDI的描点模式, 它的寻址就占了很多时间, 可以在内存中将按位图数据填充好, 再显示, 参考CDib类 每次都要绘制不一样的内容么? 如果不是,绘到内存位图上就好了, 绘制一次,多次贴图使用
对,因为每一项要绘制的图形都是不一样的,如果是在DrawItem中利用双缓冲内存位图绘制方式与DrawItem消息有冲突?好像是不能显示出来的。CDib类?能否给出一个应用实例,以前没有了解过这个?
zgl7903 2019-09-10
  • 打赏
  • 举报
回复
不建议使用GDI的描点模式, 它的寻址就占了很多时间, 可以在内存中将按位图数据填充好, 再显示, 参考CDib类 每次都要绘制不一样的内容么? 如果不是,绘到内存位图上就好了, 绘制一次,多次贴图使用
zgl7903 2019-09-10
  • 打赏
  • 举报
回复
http://www.codeforge.com/read/5765/cdib.h__html http://www.codeforge.com/read/5765/cdib.cpp__html
qq_29720391 2019-09-10
  • 打赏
  • 举报
回复
引用 3 楼 大树学长 的回复:
看看是否有内存泄漏的现象,内存泄漏会导致画图越来越卡顿
内存泄漏肯定是没有的。

15,979

社区成员

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

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