我用内存设备环境绘图,最后用SRCCOPY拷贝的屏幕上,图象的背景全是黑的;如果用SRCINVERT,那么就是原始图象的反色。
我想在CBitmap对象选进内存设备环境之后(或之前)把整个背景设置成我想要的颜色(如白色),而不是黑色,不用CDC::FloodFill(),这样速度太慢并且不是我想要的解决方法。
请问该如何做到。
谢谢!

解决方案 »

  1.   

    看不太清楚,dc.SetBkColor不行吗?
      

  2.   

    也就是说我把CBitmap对象选进内存设备环境后,如果直接在内存设备环境中绘图,那么这个图象的背景是黑色,我想是因为图象的初始数据为0的原因,我现在要的是,把我在其中绘图的CBitmap对象(已经选进内存设备环境了)的背景色设置为我想要的颜色如白色,而不是通过Raster Operation。
      

  3.   

    to dreamy(Sharping) :
    我试过了,不行:(
    用memDC.FloodFill()倒可以,不过它会耗费很大的CPU时间。
      

  4.   

    BITMAP bmp;
    ::GetObject((HBITMAP)*m_bitmap,sizeof(BITMAP),&bmp);
    DWORD dwCount = (DWORD)(bmp.bmWidthBytes*bmp.bmHeight);
    HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE,dwCount);
    BYTE *pbyData = (BYTE*)::GlobalLock(hMem);
    if(pbyData==NULL)
      return;
    memset(pbyData,255,dwCount);
    m_bitmap.SetBitmapBits(dwCount,pbyData);
    ::GlobalUnlock(hMem);
    ::GlobalFree(hMem);
      

  5.   

    ::GetObject((HBITMAP)*m_bitmap,sizeof(BITMAP),&bmp);
    应为:
    ::GetObject((HBITMAP)m_bitmap,sizeof(BITMAP),&bmp);
      

  6.   

    我试了subtop的方法,可以,还有没有别的方法啊