现在我在写个软件,有一个View中的内容需要自己来画,当然就是在OnDraw中往DC上画了
但是,因为要画的内容需要经过一定时间的整理才能绘制出来。所以,每次OnDraw都进行一次这样的演算使得程序运行效率非常的低
现在的想法是这样的,把要显示的内容先画好,保存起来,OnDraw的时候只管显示画好的数据就行了
但是DC本身就提供足够的绘图功能,别处找不到这样的功能。
所以,怎么样把在一个不显示的DC上绘制图案呢?也就是怎么样得到一个不会被显示出来的DC,在上面画好以后保存成Bitmap,然后OnDraw时就直接显示Bitmap。
这个DC怎么得到??

解决方案 »

  1.   

    听说metafile好像就做这个用的,不过我不太了解,你去找找这个的资料
      

  2.   

    怎么样得到一个不会被显示出来的DC:
    virtual BOOL CreateCompatibleDC( CDC* pDC );
    这种兼容型dc是一种内存型的,不会显示
      

  3.   

    假如再 dc 上画
    CDC memDC;
    CBitmap bitmap, *pOldBitmap;
    memDC.CreateCompatibleDC(&dc);
    bitmap.CreateCompatibleBitmap(&dc, 300, 300);
    pOldBitmap = memDC.selectObject(&bitmap);
    // 绘图
    然后过一段时间,dc.BitBlt(0, 0, 300, 300, &memDC, 0, 0, SRCCOPY);