RGB的定义:
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
COLORREF的定义:
typedef DWORD COLORREF;
所以RGB的位表示如下:
DWORD 16-13bit 12-9bit 8-5bit 4-1bit
RGB 00 b g r
ARGB的定义:
typedef DWORD ARGB;
#define ALPHA_SHIFT 24 #define RED_SHIFT 16 #define GREEN_SHIFT 8 #define BLUE_SHIFT 0 #define ALPHA_MASK ((ARGB) 0xff << ALPHA_SHIFT) #define MAKEARGB(a, r, g, b) / (((ARGB) ((a) & 0xff) << ALPHA_SHIFT)| / ((ARGB) ((r) & 0xff) << RED_SHIFT) | / ((ARGB) ((g) & 0xff) << GREEN_SHIFT)| / ((ARGB) ((b) & 0xff) << BLUE_SHIFT)) DWORD 16-13bit 12-9bit 8-5bit 4-1bit ARGB a r g b 由上面的定义知: RGB to ARGB 就是补齐DOWRD的13-16位,并交换1-4位与9-12位 c为RGB格式: #define RGB2ARGB( c ) 0xff000000 | (c & 0x000000ff) << 16 | (c & 0x0000ff00) | (c & 0x00ff0000) >> 16 example: ARGB a = RGB2ARGB(RGB(r,g,b)); 谢谢!转载请链接。