目前我在做有关屏幕抓屏的时候想到,为了提高效率
能不能不直接从内存里抓?
抓了之后放到内存DC里?而不是COPY屏幕还有,如果高效地比较两个内存DC的异同?
因为我很少接触到有关这方面的编程
所以来请教一下分数不是问题!

解决方案 »

  1.   

    you can use double dc buffer
    /////////////////////////////////////////////////
    CDC MemDC; //首先定义一个显示设备对象 
    CBitmap MemBitmap;//定义一个位图对象 //随后建立与屏幕显示兼容的内存显示设备 
    MemDC.CreateCompatibleDC(NULL); 
    MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight); 
       
    //将位图选入到内存显示设备中 
    //只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上 
    CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); 
    MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255)); //绘图 
    MemDC.MoveTo(……); 
    MemDC.LineTo(……); //将内存中的图拷贝到屏幕上进行显示 
    pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY); //绘图完成后的清理 
    MemBitmap.DeleteObject(); 
    MemDC.DeleteDC(); 
      

  2.   

    内存DC是否可以通过SOCKET发送出去?
      

  3.   

    you only send Buffer containing the data to be transmitted.