关于COLORREF与RGBQUAD的颜色转换问题

本文探讨了在MFC应用程序中,如何处理COLORREF和RGBQUAD结构之间的颜色转换问题。通过代码示例展示了它们在存储顺序上的差异,并提供了验证这一现象的方法。
摘要由CSDN通过智能技术生成

观察以下代码:

COLORREF rgb = pDC->GetBkColor();

BYTE r,g,b;
r = GetRValue(rgb);
g = GetGValue(rgb); 
b = GetBValue(rgb);
COLORREF的存储为 0x00BBGGRR,即R在低位。
在小端存储模式中,低地址存放低位数据,高地址存放高位数据,windows使用小端存储。
十六位数字0x11223344在小段模式存储为 "低地址..44 33 22 11..高地址"
我们称读作:0x11223344,存作:44332211,(注意是十六进制数据)
假设一个颜色值 RR GG BB,使用COLORREF表示,则读作:0x00BBGGRR,存作:RRGGBB00
而RGBQUAD是一个结构体,定义如下:
typedef struct tagRGBQUAD {
        BYTE    rgbBlue;
        BYTE    rgbGreen;
        BYTE    rgbRed;
        BYTE    rgbReserved;
} RGBQUAD;
结构体变量存储的时候,跟字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值