I've come across another problem. This time I need my program to "see" different colors.
Pretty much all I need is a function which tells the color of a single pixel on my screen by using the x-coordinate and the y-coordinate. I hope there is a function like that :P
I did some searching though and I found a great function called GetPixel, but as far as I can know it can only tell colors from a image file. Correct me if I'm wrong.
The GetPixel function retrieves the red, green, blue (RGB) color value of the
pixel at the specified coordinates.
COLORREF GetPixel(
HDC hdc, // handle of device context
int XPos, // x-coordinate of pixel
int nYPos // y-coordinate of pixel
);
Parameters
hdc
Identifies the device context.
nXPos
Specifies the logical x-coordinate of the pixel to be examined.
nYPos
Specifies the logical y-coordinate of the pixel to be examined.
Return Values
If the function succeeds, the return value is an RGB value. If the pixel is outside of the
current clipping region, the return value is CLR_INVALID.
Remarks
The pixel must be within the boundaries of the current clipping region.
Not all devices support GetPixel. An application should call GetDeviceCaps to determine
whether a specified device supports this function.
See Also
GetDeviceCaps, SetPixel
In theory if you are getting a pixel, that means you are handling a paint operation......it would look like this in code...
1 2 3 4 5 6 7 8 9 10 11 12 13
case WM_PAINT:
{
PAINTBRUSH ps;
HDC hDC=BeginPaint(hWnd,&ps);
// Get the color of the pixel.
COLORREF PixelColor=GetPixel(hDC,10,10);
// Rest of program code...
EndPaint(hWnd,&ps);
break;
}
Some systems don't support GetPixel() dinosaur systems that is and by the way, GetPixel() eats up a considerable amount of resources. GetPixel() is what I used in my Squibbles game to implement object collisions.