正文

VC通过HBITMAP获取RGB值2010-08-17 19:56:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/51673.html

分享到:

        CRect rect(0,0,iLen,iLen);
        HBITMAP hBitmap = CopyScrToBitmap(rect); //该方法见 VC截取桌面到 bitmap                         //http://blog.pfan.cn/lym51/51672.html
        if (hBitmap!= NULL)
        {
            CBitmap* bitmap = CBitmap::FromHandle(hBitmap);
            BITMAP bmp;
            bitmap->GetBitmap(&bmp);
            int bitmapSize=bmp.bmWidthBytes*bmp.bmWidthBytes;
            BYTE* px = (BYTE*)GlobalAlloc(GPTR, bitmapSize);
            if (px==NULL)
            {
                return 0;
            }
            //bitmap->SetBitmapBits(bitmapSize, px);

            bitmap->GetBitmapBits(bitmapSize, px);
            int pixelBytes = bmp.bmBitsPixel/8;
            int x,y,index;
            int pos=0;
            for (y=0; y<bmp.bmHeight; ++y)
            {
                pos = 0;
                for (x=0; x<bmp.bmWidth; ++x)
                {
                    index = y*bmp.bmWidthBytes + x*pixelBytes;
                    px[index]; // B
                    px[index+1]; // G
                    px[index+2]; // R
                 }
            }
            ::GlobalFree(px);
            bitmap->DeleteObject();
        }

阅读(7515) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册