我有设备DC的指针,但通过GetPixel得到像素的RGB值速度太慢,有没有其他方法可以得到DC的RGB数组?速度要快

解决方案 »

  1.   

    HDC hdc;
    HDC mdc;
    BITMAP bm;
    HBITMAP hBmp;
    unsigned char *px; // 指向存储像素的地址
    hdc = GetDC(hWnd);
    mdc = CreateCompatibleDC(hdc);
    hBmp = LoadImage(NULL, "test.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE);
    GetObject(hBmp, sizeof(BITMAP), &bm);
    px = new unsigned char[bm.bmHeight * bmWidthBytes];
    //把图片的内容存储到px数组中
    GetBitmapBits(hBmp, bm.bmHeight * bm.WidthBytes, px);
      

  2.   

    dc是窗口dc,我要获取窗口客户区里的像素,而不是资源中的图片像素.
      

  3.   

    创建一个兼容DC和兼容位图,把兼容位图选入兼容DC中,把窗口DC上的内容BitBlt到兼容DC上,选出兼容位图,这个位图的内容就是窗口DC的内容了。简单的截屏原理。