关于内存绘图的问题
2010-04-26 09:17
302 查看
void CCurveView::OnPaint() { CPaintDC dc(this);//device context for painting CDC MemDC;//定义一个显示设备对象 CBitmap MemBitmap;//定义一个位图对象 GetClientRect(&m_rect);//CRect m_rect; MemDC.CreateCompatibleDC(NULL);//建立一个与屏幕显示兼容的内存显示设备 //建立一个与屏幕显示兼容的位图,位图大小用窗口大小 MemBitmap.CreateCompatibleBitmap(&dc,m_rect.Width(),m_rect.Height()); //将位图选入到内存显示设备中,选入了位图的内存显示设备才有地方绘图,画到指定的位图上 CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); //调函数用背景色将位图清除干净 Func1(&MemDC); //画曲线 Func2(&MemDC); //将内存中的图拷贝到屏幕上进行显示 dc.BitBlt(0,0,m_rect.Width,m_rect.Height(),&MemDC,0,0,SRCCOPY); //绘图后完成清理 MemBitmap.DeleteObject(); MemDC.DeleteDC(); }
说明:
假如你要对屏幕进行比较多的gdi函数操作,如果每一步操作都直接对屏幕dc进行操作,那出现的大多数可能性都是屏幕的闪烁。
一个很好的解决方法就是使用内存dc,将这些操作全部先在内存dc上操作,然后一次性在屏幕上进行操作。
在执行MemDC.CreateCompatibleDC(NULL);的语句时,内存并没有分配.
MemDC.SelectObject(&MemBitmap);时分配了内存.
相关文章推荐
- 关于SQL SERVER的内存使用的问题
- iOS指南系列:如何解决奔溃问题-关于内存访问
- 关于UIWebView内存不足的问题
- 关于在运行Report Builder工具时出现硬盘持续减少和内存持续减少的问题
- 关于使用SDWebImage内存爆涨的问题
- 关于vs2010 内存不足的问题
- 关于拷贝时内存重叠与不重叠的问题
- ios开发中关于绘图的问题
- 关于WIN7 内存占用很大的 问题svchost.exe
- 关于C++内存对齐的问题
- 关于根据指针测定一块内存所占空间大小的问题
- 关于多态里父类的析构函数造成子类内存泄露的问题
- 关于我的程序的内存越界问题
- 关于Tomcat 8.5 启动是内存溢出的问题
- 关于realarm S5P4418的u-boot显示内存大小问题解决方法
- 关于Python multiprocessing.Array创建的共享内存无法删除的问题
- 关于UIImageJPEGRepresentation 内存的问题
- [ATL/WTL]_[初级]_[关于graphics.DrawImage绘图时显示不正常的问题]
- 关于占用过多内存的问题
- QQ群里关于动态内存的问题