我想在屏幕上的不同x,y坐标处获取像素的RGB值.
我怎么会用C来解决这个问题呢?
我怎么会用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; }