#define RGB555_565(rgb) ((WORD)(((((WORD)(rgb))&0x7C00)<<1) | \
((((WORD)(rgb))&0x03E0)<<1) | \
((((WORD)(rgb))&0x001F)) \
))
#define RGB565_555(rgb) ((WORD)(((((WORD)(rgb))&0xF800)>>1) | \
((((WORD)(rgb))&0x07C0)>>1) | \
((((WORD)(rgb))&0x001F)) \
))
#define RGB888_555(rgb) ((WORD)(((((DWORD)(rgb))&0x000000F8)<<7) | \
((((DWORD)(rgb))&0x0000F800)>>6) | \
((((DWORD)(rgb))&0x00F80000)>>19) \
))
#define RGB888_565(rgb) ((WORD)(((((DWORD)(rgb))&0x000000F8)<<8) | \
((((DWORD)(rgb))&0x0000FC00)>>5) | \
((((DWORD)(rgb))&0x00F80000)>>19) \
))
#define RGB555_888(rgb) ((DWORD)(((((WORD)(rgb))&0x001F)<<16) | \
((((WORD)(rgb))&0x03E0)<<6) | \
((((WORD)(rgb))&0x7C00)>>7) \
))
#define RGB565_888(rgb) ((DWORD)(((((WORD)(rgb))&0x001F)<<16) | \
((((WORD)(rgb))&0x07E0)<<5) | \
((((WORD)(rgb))&0xF800)>>8) \
))
#define RGB555(b,g,r) ((WORD)((((BYTE)(r)>>3)|((WORD)(((BYTE)(g)>>3))<<5))|(((WORD)((BYTE)(b>>3)))<<10)))
#define RGB565(b,g,r) ((WORD)((((BYTE)(r)>>3)|((WORD)(((BYTE)(g)>>2))<<5))|(((WORD)((BYTE)(b>>3)))<<11)))
#define GET555BValue(rgb) ((BYTE) (((((WORD)(rgb))&0x7C00))>>7) )
#define GET555GValue(rgb) ((BYTE) (((((WORD)(rgb))&0x03E0))>>2) )
#define GET555RValue(rgb) ((BYTE) (((((WORD)(rgb))&0x001F))<<3) )
#define GET565BValue(rgb) ((BYTE) (((((WORD)(rgb))&0xF800))>>8) )
#define GET565GValue(rgb) ((BYTE) (((((WORD)(rgb))&0x07E0))>>3) )
#define GET565RValue(rgb) ((BYTE) (((((WORD)(rgb))&0x001F))<<3) )
注:Windows中的RGB(DWORD)与D3DCOLOR(DWORD)是不一样的,RGB(DWORD)转为D3DCOLOR(DWORD)四个通道,默认A通道为00即透明
Reference:D3DCOLOR与D3DXCOLOR http://www.cnblogs.com/graphics/archive/2010/09/02/1816170.html