我要在窗体上同时往多个区域绘图,我应该怎么做呢?

airhawk 2005-07-11 03:26:59
我现在的思路基本上是:
create memory dc1(rect1),draw ,bitblt to client dc,
create memory dc2(rect2),draw ,bitblt to client dc,
...
感觉这样不是很好,如果有好多区域需要重绘的画,一样会有闪屏问题,
我应该怎么做呢?
难道计算一个包含这些区域的区域,然后 bitblt client dc to mem dc ,draw in mem dc,bitblt mem dc to client dc 吗?这样的话,如果这个包含区域很大的,性能又很差的,
请各位给一个比较好的思路哦。
谢了。
...全文
83 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ljp3000 2005-07-12
Invalidate时记得参数选 false
回复
ChenJF206 2005-07-11
全部在memDC上画,完成之后再画到pDC上;
另外,可能要重载OnEraseBkgnd,禁止背景刷新
回复
快乐鹦鹉 2005-07-11
你将整个窗口作为一个内存位图进行绘制不就完事了么。干嘛分成多个位图阿。
回复
goodboyws 2005-07-11
如果区域不重叠的话,完全没有影响啊
回复
airhawk 2005-07-11
哪位大哥,给点提示莫,很急的呀。谢了
回复
airhawk 2005-07-11
我的代码
CDC memDC;
//画第一块区域
memDC.CreateCompatibleDC(pDC);
ltPos=m_timer.GetLTPos();
CBitmap *pOldBmp=memDC.SelectObject(&m_timerNum.m_background);
pDC->BitBlt(rect1.left,rect1.top, rect1.Width(),rect1.Height(),
&memDC,0,0,SRCCOPY);
//画第二块区域
memDC.SelectObject(&m_timer.m_background);
pDC->BitBlt(ltPos.x,ltPos.y,m_timer.GetSize().cx,
m_timer.GetSize().cy/2,&memDC,0,0,SRCCOPY);
//释放资源
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
主要是两个pDC->BitBlt,会不会有闪屏的可能?
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-07-11 03:26
社区公告
暂无公告