void CMemBitmap::DrawPt(POINT pt[],int Count,*Brush)
{
CDC tDC,*pDC;
CBitmap *SecondBm,*pOldBm;
CRect rect; SecondBm=new CBitmap();
m_pWnd->GetClientRect(&rect);
pDC=m_pWnd->GetDC(); tDC.CreateCompatibleDC(pDC);
//创建第二个图层
SecondBm->CreateCompatibleBitmap(pDC,1000,1000); pOldBm=tDC.SelectObject(SecondBm);
//把第一个图层的内容COPY到第二个图层,他们的大小都是1000x1000
tDC.BitBlt(0,0,1000,1000,&m_pmenDC,0,0,SRCCOPY);
         tDC.SelectObject(Brush);
for(int i=0;i<Count;i++)
{
//在第二个图层上面描点
tDC.Rectangle(pt[i].x,pt[i].y,pt[i].x+30,pt[i].y+30,Brush);
}//把第二个图层缩放到窗口上面显示
pDC->StretchBlt(0,0,rect.right,rect.bottom,&tDC,0,0,1000,1000,SRCCOPY);

tDC.SelectObject(pOldBm);
tDC.DeleteDC();

m_pWnd->ReleaseDC(pDC); delete SecondBm;

}我用1秒的速度调用这个函数,CPU占用率居然在8%-12%,真是无法接受,因为我看别人做的GDI动画效果很好,而且CPU占用也很低,所以应该是我的代码不合理,还请高手帮忙指点一二,谢谢~~~

解决方案 »

  1.   

    顺便请教各位一个问题:
    1,我无法进入提问社区,我是新手请多指教
    2,vc+ado中
    _Recordset mySet;
    BOOL M=mySet->adoEOF;
    BOOL N=mySet->BOF;
    编译时出现一个错误:error C2039: 'adoEOF' : is not a member of '_Recordset'
    请大家指教,多谢
      

  2.   

    CDC tDC,*pDC;
    CBitmap *SecondBm,*pOldBm;
    CRect rect; SecondBm=new CBitmap();
    m_pWnd->GetClientRect(&rect);
    pDC=m_pWnd->GetDC(); tDC.CreateCompatibleDC(pDC);
    //创建第二个图层
    SecondBm->CreateCompatibleBitmap(pDC,1000,1000);可以把以上这些代码都放在初始化里进行啊,如果你的这个函数频繁调用的话,这样会节省一些CPU的时间的