还是防止闪屏的问题

Antibug 2002-04-25 10:06:36
SDI程序,在OnDraw()中实现大量的矢量图形的绘制,还是有屏幕闪烁的问题,使用内存作图还是无法解决。请教高手。
伪源码如下:
OnDraw()
{
int i,j;
CDC mem_dc;
CPen m_Pen;
CPen *m_pOldPen;
mem_dc.CreateCompatibleDC(pDC);

CRect rect;
GetClientRect(&rect);

CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
mem_dc.SelectObject(&bmp);
mem_dc.FillSolidRect(&rect,RGB(255,255,255)); //
//在mem_dc上面画图写字
m_Pen.CreatePen(PS_SOLID,1,RGB(128,128,128));
m_pOldPen=mem_dc.SelectObject(&m_Pen);
for(i=10;i<rect.Height();i+=10)
{
//horz
mem_dc.MoveTo(0,i);
mem_dc.LineTo(rect.Width(),i);
}
for(j=10;j<rect.Width();j+=10)
{
// ver
mem_dc.MoveTo(j,0);
mem_dc.LineTo(j,rect.Height());
}
// *********************list***************************
POSITION pos=m_ShapeList.GetHeadPosition ();
CShape *p;
while(pos)
{
p=(CShape *) m_ShapeList.GetAt(pos);
p->Draw (&mem_dc);
m_ShapeList.GetNext (pos);
}

//******************************************************
::BitBlt(pDC->GetSafeHdc(),0,0,rect.Width(),rect.Height(),mem_dc.GetSafeHdc(),0,0,SRCCOPY);
//
mem_dc.SelectObject(m_pOldPen);
}
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Antibug 2002-04-25
  • 打赏
  • 举报
回复
alen1989(alen) :
好像还是不行
Antibug 2002-04-25
  • 打赏
  • 举报
回复
TO: svod5306(区区)
我给出的只是简单测试程序。你的说法我也试过了,在Rect中也存在闪烁的问题。
//
TO: guopo(guopo)
如果要及时显示绘制的所有图形,除了在OnDraw里触发绘制事件,还有其他的方法吗?谢谢
To:alen1989(alen)
我来试试你的Idea



alen1989 2002-04-25
  • 打赏
  • 举报
回复
看看是不是FrameWnd的类Style有CS_HREDRAW或CS_VREDRAW,MFC默认是有的,父窗口如果在尺寸变化时重画并且没有WS_CLIPCHILDREN属性肯定会闪烁的啦
svod5306 2002-04-25
  • 打赏
  • 举报
回复
guopo(guopo)说的有道理,算法思想有问题,不过你也可以算一下矢量图所占据的Rect,然后只绘无效区呀
guopo 2002-04-25
  • 打赏
  • 举报
回复
我想你应该把在内存中绘图的一段放倒别的地方试试,ONDRAW调用的太频繁了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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