+-
将十六进制数转换为颜色值

我有一个LCD固件,我想修改一下,增加一些颜色。我发现颜色定义如下。

#define WHITE                 0xFFFF
#define BLACK                 0x0000
#define BLUE                  0x001F
#define GBLUE                 0X07FF
#define RED                   0xF800
#define MAGENTA               0xF81F
#define GREEN                 0x07E0
#define CYAN                  0x7FFF
#define YELLOW                0xFFE0
#define BROWN                 0XBC40
#define BRRED                 0XFC07
#define GRAY                  0X8430

这些值如何转化为实际的十六进制颜色值?例如,青色被列为 0x7FFF 但青色的十六进制颜色值是 #00FFFF

1
投票

这是RGB565颜色格式。5位为红色,6位为绿色,5位为蓝色。

WORD red_mask = 0xF800;
WORD green_mask = 0x7E0;
WORD blue_mask = 0x1F;
BYTE red_value = (pixel & red_mask) >> 11;
BYTE green_value = (pixel & green_mask) >> 5;
BYTE blue_value = (pixel & blue_mask);

反之亦然。

// Assuming the color values have been truncated to the correct number of bits:
WORD pixel565 = (red_value << 11) | (green_value << 5) | blue_value;

参考:参考: https:/docs.microsoft.comen-uswindowswin32directshowworking-with-16位-rgb。