"不觉得在Copy一次会影响性能",写错了,因该是 "我觉得再Copy一次会影响性能"。

解决方案 »

  1.   

    pDC->GetCurrentBitmap()->GetBitmap(pBmp)
      

  2.   

    CClient* pMyDC = new CClientDC(m_pWnd);
    int iPixel = ChoosePixelFormat(pMyDC->m_hDC,&saveInfo); //saveInfo你要定义一下,里面有DC的Buffer Info;
    SetPixelFormat(pMyDC->m_hDC,iPixel,&saveInfo);
    ............
    我想到应该有更好的方法:buffer->Pixel Change->Pixel Data->Display List
    。。让我再想想
    另GetBitmapBits()?我几千年前才会用这个函数
      

  3.   

    谢谢各位的回答。我是想获得这样一个效果,返回一个 char *的指针,比如char *pData,则pData[0]或者pData[0]-pData[3],就是第一个像素的值;pData[1]或者pData[4]-pData[7]就是第二个像素的值....
      

  4.   

    1) MS GDI 不润许直接操作内存地址
    2)用多个DC优化,速度是可以的
      

  5.   

    我这么做是为了完成这样的功能,在服务器上完成了一个GDI的画图操作,我想用客户端来取这次操作的结果,并将这个结果在显示出来,本来服务器上的操作可以保存成一个位图文件,然后供客户端使用。但我觉得这样的性能,不如直接将HDC中的内容传给客户端。我知道在DirectX中有方法得到DC缓冲区的指针,我想DX可以取到DC的缓冲区指针,那绕过DX,通过编程来取DC缓冲区的指针也是可实现的,因为这是一个和DX联系的不是很紧的功能,如果就这样加上DX的一堆库,觉得不是很好。
      

  6.   

    我想DX可以取到DC的缓冲区指针,那绕过DX,通过编程来取DC缓冲区的指针也是可实现的,
    DX = COM + WDM
    那绕过DX,通过编程来取DC缓冲区的指针是  不太可能  实现的,
      

  7.   

    比较好的办法就是使用GetDIBits了,像素的具体格式是跟当前的显示模式相关的,你要是自己去Handle各种情况会非常累的。
      

  8.   

    多谢code_cold(玉米)!
    要是实在不行,我就只好用DX了!
    不过我不会放弃的!难道只能这么说说而已了?