COLORREF 、 RGB、

MSDN中对RGB结构体的定义如下:

The RGB macro is defined as follows.

 #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \     ((WORD) (g) << 8)) | \     (((DWORD) (BYTE) (b)) << 16)))

由此可见,一个DWORD体中的后三个字节分别是B,G,R;最前一个字节为零。

fun(BYTE R,BYTE G,BYTE B)

 DWORD wValue; 

 wValue = RGB(R,G,B); 

 printf("%x", wValue);  

:   :   :

//以下将DWORD转化为R,G,B

  R = wValue & 0xff; 

G = (wValue>>8)&0xff; 

 B = (wValue >>16) & 0xff;

}

 

RGB图像格式转化

#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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值