在C中获取像素颜色

我想在屏幕上的不同x,y坐标处获取像素的RGB值.
我怎么会用C来解决这个问题呢?

我正在尝试创建自己的高斯模糊效果.

这将在Windows 7中.

编辑

需要包含哪些库才能运行?

我要做的:

#include <iostream>

using namespace std ;

int main(){

    HDC dc = GetDC(NULL);
    COLORREF color = GetPixel(dc,0);
    ReleaseDC(NULL,dc);

    cout << color; 

}

解决方法

如前一篇文章所述,您需要Win32 API中的 GetPixel功能.

GetPixel位于gdi32.dll中,所以如果你有一个合适的环境设置,你应该能够包含windows.h(包括wingdi.h),你应该是金色的.

如果由于某种原因设置了最小的环境,您也可以直接在gdi32.dll上使用LoadLibrary.

GetPixel的第一个参数是设备上下文的句柄,可以通过调用GetDC函数(也可以通过< windows.h>获得)来检索它.

从dll加载GetPixel并在光标所在的位置打印出像素颜色的基本示例如下所示.

#include<windows.h>
#include<stdio.h>

int main(int argc,char** argv)
{
    FARPROC pGetPixel;

    HINSTANCE _hGDI = LoadLibrary("gdi32.dll");
    if(_hGDI)
    {
        pGetPixel = GetProcAddress(_hGDI,"GetPixel");
        HDC _hdc = GetDC(NULL);
        if(_hdc)
        {
            POINT _cursor;
            GetCursorPos(&_cursor);
            COLORREF _color = (*pGetPixel) (_hdc,_cursor.x,_cursor.y);
            int _red = GetRValue(_color);
            int _green = GetGValue(_color);
            int _blue = GetBValue(_color);

            printf("Red: 0x%02x\n",_red);
            printf("Green: 0x%02x\n",_green);
            printf("Blue: 0x%02x\n",_blue);
        }
        FreeLibrary(_hGDI);
    }
    return 0;
}

相关文章

文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...
文章浏览阅读1.8k次,点赞11次,收藏37次。因为自己对决策树...
文章浏览阅读492次。C++ 设计模式之策略模式
文章浏览阅读683次。我也算是个C++的小白,对于C++中的谓语我...
文章浏览阅读225次。又看了一遍操作符的东西,感觉之前对操作...