C++ 使用 Win32 API 获取屏幕像素颜色
在 C++ 中,可以使用 Windows GDI 函数来读取屏幕上某个像素点的颜色。下面是一个示例代码,演示如何使用 GDI 函数读取屏幕上指定坐标的像素点颜色:
#include <windows.h>
#include <iostream>
int main() {
// 获取屏幕设备上下文
HDC hdcScreen = GetDC(NULL);
// 指定要读取颜色的像素坐标
int x = 100;
int y = 100;
// 使用 GetPixel 函数获取指定像素点的颜色
COLORREF color = GetPixel(hdcScreen, x, y);
// 从颜色中提取 RGB 分量值
int red = GetRValue(color);
int green = GetGValue(color);
int blue = GetBValue(color);
// 输出颜色分量值
std::cout << "Pixel color at (" << x << ", " << y << "): ";
std::cout << "R: " << red << ", G: " << green << ", B: " << blue << std::endl;
// 释放设备上下文
ReleaseDC(NULL, hdcScreen);
return 0;
}
在上述代码中,使用 GetDC(NULL) 函数获取屏幕设备上下文,然后使用 GetPixel 函数获取指定像素点的颜色。GetPixel 函数返回一个 COLORREF 类型的值,可以使用 GetRValue、GetGValue 和 GetBValue 函数分别获取颜色的红、绿、蓝三个分量的值。
请注意,在使用 GDI 函数时,需要包含 windows.h 头文件,并链接 gdi32.lib 库。
需要注意的是,使用 GDI 函数来读取屏幕上的像素点颜色可能会比较慢,因为每次读取都需要与系统交互。如果需要高效地读取大量像素点颜色,可以考虑使用其他技术,如 DirectX 或 OpenGL。
原文地址: https://www.cveoy.top/t/topic/qrsG 著作权归作者所有。请勿转载和采集!