none
使用Bitblt从物理DC复制信息到内存DC的时间 RRS feed

  • 问题

  • 在EVC4.0中,使用CDC::Bitblt函数,下面两段代码所用的时间为何不相同,差别在哪儿?

    第一段:

    CDC*  pDC;//是一个内存DC

    ....创建内存DC.

    CDC dc;实际DC;

    int   m_nWidth=100;

    int  m_nHeight=100;

    DWORD ds=GetTickCount();

     for(int i=0;i<100;i++)
           pDC->BitBlt(0, 0, m_nWidth,m_nHeight, &dc, 0, 0, SRCCOPY); 

    DWORD de=GetTickCount();

     

    第二段:

    CDC*  pDC;//是一个内存DC

    ....创建内存DC.

    CDC dc;实际DC;

    int   m_nWidth=100;

    int  m_nHeight=100;

    DWORD ds1=GetTickCount();

    pDC->SaveDC();
    pDC->IntersectClipRect(0, 0, m_nWidth,m_nHeight);

     for(int i=0;i<100;i++)
           pDC->BitBlt(0, 0, 1024,768,&dc , 0, 0, SRCCOPY); 

    DWORD de1=GetTickCount();

    pDC->RestoreDC(-1)

     

    两段代码的执行效果是相同的,但de1-ds1不等于de-ds,为什么?

     

    2007年12月19日 8:42

答案

  • 你下一个程序设置了IntersectClipRect剪裁区,这个功能要做一些运算,当然时间会与上一个程序不同!

     

    2007年12月30日 5:42
    版主