COLORREF为RGB或十六进制

COLORREF as RGB or hexadecimal

本文关键字:十六进制 RGB COLORREF      更新时间:2023-10-16

我的当前代码从当前光标位置读取GetPixel,但返回值只是COLORREF的一些疯狂值,我希望它在RGB中。我查看了微软参考,我找到了RGB

COLORREF RGB(
   BYTE byRed,
   BYTE byGreen,
   BYTE byBlue
);

和我的问题是我应该如何使用从GetPixel返回到这个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()函数返回COLORREF,您可以将其转换为RGB值,如下所示:

COLORREF color = GetPixel(hdc, x, y);
RGBTRIPLE rgb;
rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);