C++程序 读取屏幕像素
获取有关屏幕像素的颜色信息是自动化软件执行的常见操作,该软件依赖屏幕上的活动。该过程是微不足道的,并且此类功能会借助图像/窗口读取库并入编程语言。本文将教您如何使用C++读取屏幕像素。 <windows.h>头文件可以帮助我们获取像素颜色。
GetPixel函数
可以调用 getpixel 函数来获取屏幕像素的颜色值,并将要读取像素值的坐标作为参数传递。
语法:
COLORREF GetPixel([in] HDC hdc, [in] int a, [in] int b);
参数:
- hdc: 设备上下文的句柄(要读取像素的设备,例如显示器)
- a: 要检查的像素的x坐标,以逻辑单位为单位。
- b: 要检查的像素的y坐标,以逻辑单位为单位。
返回值: 返回值是 COLORREF 值,指定像素的RGB。如果像素超出剪辑区域,则返回值为 CLR_INVALID 。
读取屏幕像素
在下面的示例中,将获取单个像素的像素值。可以通过循环方法扩展此方法以获取一系列像素的颜色值。
示例:
//C++程序实现
//读取屏幕像素
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
//将设备上下文分配给当前输出设备
HDC dng = GetDC(NULL);
//调用GetPixel函数并传入设备上下文和坐标
//坐标应在设备上下文的最大分辨率内
//例如全高清显示器中的屏幕坐标X <1919
COLORREF c = GetPixel(dng, 10, 150);
//将数据美化为包含RGB值的元组输出
//GetRValue函数返回像素的红色值
//GetGValue函数返回像素的绿色值
//GetBValue函数返回像素的蓝色值
cout<< "(";
cout<< (int)GetRValue(c)<< ", ";
cout<< (int)GetGValue(c)<< ", ";
cout<< (int)GetBValue(c)<< ")";
//释放句柄
ReleaseDC(NULL, dng);
}
输出:
程序输出
说明: 首先使用NULL参数(用于屏幕)使用获取显示器的设备上下文。然后调用GetPixel函数,并将设备上下文以及像素的水平和垂直坐标作为参数发送过去。将返回数据存储在COLORREF变量中。稍后,通过GetRValue、GetBValue和GetGValue函数获得像素的红色、绿色和蓝色通道值,这些值被强制转换为适合输出。最后,使用ReleaseDC函数释放显示上下文句柄。