Как упоминалось в предыдущем сообщении, вам нужен GetPixel из Win32 API.
GetPixel находится внутри gdi32.dll, поэтому, если у вас есть правильная настройка среды, вы сможете включить windows.h (который включает wingdi.h), и вы должны быть золотыми.
Если у вас по какой-либо причине настроена минимальная среда, вы также можете напрямую использовать LoadLibrary для gdi32.dll.
Первый параметр GetPixel — это дескриптор контекста устройства, который можно получить, вызвав функцию GetDC (которая также доступна через <windows.h>).
Базовый пример, который загружает GetPixel из dll и распечатывает цвет пикселя в текущей позиции курсора, выглядит следующим образом.
#include<windows.h>
#include<stdio.h>
typedef WINAPI COLORREF (*GETPIXEL)(HDC, int, int);
int main(int argc, char** argv)
{
HINSTANCE _hGDI = LoadLibrary("gdi32.dll");
if(_hGDI)
{
while(true) {
GETPIXEL pGetPixel = (GETPIXEL)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;
}
person
syllogism
schedule
30.01.2011