RGB TO ARGB

    技术2022-05-19  20

    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)); 谢谢!转载请链接。


    最新回复(0)