COLORREF 作为 RGB 或十六进制

问题描述 投票:0回答:1

我当前的代码从当前光标位置读取

GetPixel
,但返回值只是
COLORREF
的一些疯狂值,我希望它在
RGB
中。我查看了 Microsoft Reference,发现
RGB
Macro

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);

    }

  }
c++ winapi macros rgb getpixel
1个回答
3
投票

GetPixel()
函数返回一个
COLORREF
,您可以将其转换为
RGB
值,如下所示:

COLORREF color = GetPixel(hdc, x, y);
RGBTRIPLE rgb;

rgb.rgbtRed = GetRValue(color);
rgb.rgbtGreen = GetGValue(color);
rgb.rgbtBlue = GetBValue(color);
© www.soinside.com 2019 - 2024. All rights reserved.