COLORREF(词语)

COLORREF是color和reference的缩写,表示颜色值,实际上是unsigned long类型。可以配合RGB()宏来设置。

简介

什么是COLORREF? 我该怎样用它?

COLORREF类型用来描绘一个RGB颜色。其定义如下:

typedef DWORD COLORREF;

typedef DWORD *LPCOLORREF;

COLORREF类型变量值描绘一个颜色时对应于下面16进制的格式:

0x00bbggrr

可以用这样一个结构体来描述。

RGB_value struct

{

byte red;

byte green;

byte blue;

byte unused;

};

其中第一字节为 0 而且始终为 0,其它三个字节分别表示蓝色、绿色和红色,刚好和 RGB 的次序相反。这个结构体用起来挺别扭。对于COLORREF,我们通常使用宏RGB对其进行赋值。

宏的定义

COLORREF RGB

(

BYTEbyRed, // red component of color

BYTEbyGreen, // green component of color

BYTEbyBlue // blue component of color

);

COLORREF 是一个 32-bit 整型数值,它代表了一种颜色。你可以使用 RGB 函数来

初始化 COLORREF。例如:

COLORREF color=RGB(0,255,0);

RGB函数接收三个 0-255 数值,一个代表红色,一个代表绿色,一个代表蓝色。在

上面的例子中,红色和蓝色值都为 0,所以在该颜色中没有红色和蓝色。绿色为最大值

255。所以该颜色为绿色。0,0,0 为黑色,255,255,255 为白色。

另一种初始化 COLORREF 的方法如下所示:

CColorDialog colorDialog;

COLORREF color;

if( colorDialog.DoModal() == IDOK )

{

color = colorDialog.GetColor();

}

这段代码使用了 MFC 中的颜色对话框,它需要文件。

如何从 COLORREF中获取RGB分量值:

COLORREF colorrrefRGB =RGB(120,250,110);

BYTE r = GetRValue(colorrrefRGB);

BYTE g = GetGValue(colorrrefRGB);

BYTE b = GetBValue(colorrrefRGB);

赞(0)
免责声明:本文部分文字与图片资源来自于网络,用户转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即在本文留言评论通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意。