首页 理论教育VC++MFC视频教程:GDI对象及颜色处理函数

VC++MFC视频教程:GDI对象及颜色处理函数

【摘要】:在Windows应用程序中,设备环境与图形对象协同进行绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画具。1)GDI对象包括六种类型,全部由CGdiObject类派生,如图7-14所示。④CBitmap(位图):用于显示和处理点阵图像的GDI对象。图7-14 GDI对象2)颜色类型变量COLORREF的定义。typedef DWORD COLORREF;typedef DWORD *LPCOLORREF;COLORREF是4字节(32位)变量,用于描绘一个颜色时对应于十六进制格式是0x00bbggrr。3)RGB宏函数颜色处理函数。常见颜色的RGB数值见表7-2。

在Windows应用程序中,设备环境(DC)与图形对象协同进行绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画具。画家使用不同的画笔、刷子以及颜料等,画出不同色彩和不同线条的画。

1)GDI对象包括六种类型,全部由CGdiObject类派生,如图7-14所示。

①CPen(画笔):用于修饰线条的颜色、宽度和线型(实线、虚线或点画线等)。

②CBrush(画刷):用于修饰一个闭合图形内部的填充内容(填充颜色、填充线条以及平铺位图)。

③CFont(字体):用于修饰输出文字的样式、高度、粗细以及字间距等。

④CBitmap(位图):用于显示和处理点阵图像的GDI对象。

⑤CRgn(区域):用于修饰输出图像的不规则边界,例如,椭圆或多边形等。

⑥CPalette(调色板):用于修饰输出图像的色调,例如,16色或256色等。

978-7-111-46378-8-Chapter07-28.jpg

图7-14 GDI对象

2)颜色类型变量COLORREF的定义。

typedef DWORD COLORREF;

typedef DWORD *LPCOLORREF;

COLORREF是4字节(32位)变量,用于描绘一个颜色时对应于十六进制格式是0x00bbggrr。任何一种颜色都是由红、蓝、绿三种基色组合而成的,三种不同强度的基色分量合并生成各种颜色。每种基色的强度范围是0~255共有256种,三种颜色叠加在一起可以生成24位色也就是真彩色。

3)RGB宏函数颜色处理函数。

#define RGBr(,g,b)\(www.chuimin.cn)

C(OLORREF)((B(YTE)r()|(W(ORD)(B(YTE)g())<<8))|((D(WORD)B(YTE)b())<<16))

RGB宏函数的功能是将红、蓝、绿三个数值,合并到一个COLORREF类型数值中。常见颜色的RGB数值见表7-2。

COLORREF c1=RGB2(55,255,0);

表7-2 常见颜色的RGB数值

978-7-111-46378-8-Chapter07-29.jpg

说明:凡RGB三个分量值相等都属于不同深浅的灰色

4)获取颜色分量值的宏函数。

#define GetRValue (rgb)((BYTE)(rgb))

#define GetGValue (rgb)((BYTE)(((WORD)(rgb))>>8)

#define GetBValue (rgb)((BYTE)((rgb)>>16))

这三个宏函数,分别用于获取颜色(COLORREF)数值的红、蓝、绿分量值。

int r=GetRValue(c1);

int g=GetGValue(c1);

int b=GetBValue(c1);