COLORREF 作为 RGB 或十六进制
COLORREF as RGB or hexadecimal
我的当前代码从当前光标位置读取 getPixel,但 return 值只是 COLORREF 的一些疯狂值,我希望它是 RGB。我查看了 Microsoft Reference 并找到了 RGB Macro
COLORREF RGB(
BYTE byRed,
BYTE byGreen,
BYTE byBlue
);
我的问题是如何将 GetPixel 中的 return 用于此 RGB 函数,然后打印该值?
当前代码:
include <Windows.h>
include <wingdi.h>
include <iostream>
pragma comment(lib, "gdi32.lib")
int main() {
while (true) {
HDC hDC;
hDC = GetDC(NULL);
POINT p;
GetCursorPos( & p);
int cx = p.x;
int cy = p.y;
std::cout << GetPixel(hDC,cx,cy) << std::endl;
Sleep(5);
}
}
GetPixel()
函数 returns 一个 COLORREF
,您可以像这样将其转换为 RGB
值:
COLORREF color = GetPixel(hdc, x, y);
RGBTRIPLE rgb;
rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);
我的当前代码从当前光标位置读取 getPixel,但 return 值只是 COLORREF 的一些疯狂值,我希望它是 RGB。我查看了 Microsoft Reference 并找到了 RGB Macro
COLORREF RGB(
BYTE byRed,
BYTE byGreen,
BYTE byBlue
);
我的问题是如何将 GetPixel 中的 return 用于此 RGB 函数,然后打印该值? 当前代码:
include <Windows.h>
include <wingdi.h>
include <iostream>
pragma comment(lib, "gdi32.lib")
int main() {
while (true) {
HDC hDC;
hDC = GetDC(NULL);
POINT p;
GetCursorPos( & p);
int cx = p.x;
int cy = p.y;
std::cout << GetPixel(hDC,cx,cy) << std::endl;
Sleep(5);
}
}
GetPixel()
函数 returns 一个 COLORREF
,您可以像这样将其转换为 RGB
值:
COLORREF color = GetPixel(hdc, x, y);
RGBTRIPLE rgb;
rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);