返回值:
指定颜色中的红色值,值的范围0~255。 说明:
GetRValue宏在WindowsSDK中定义。 2.2.8HSLtoRGB
该函数用于转换HSL颜色为RGB颜色。 COLORREFHSLtoRGB(floatH,floatS,floatL); 参数:
H原HSL颜色模型的Hue(色相)分量,0<=H<360。
S原HSL颜色模型的Saturation(饱和度)分量,0<=S<=1。 L原HSL颜色模型的Lightness(亮度)分量,0<=L<=1。 返回值:
对应的RGB颜色。 说明: HSL又称HLS。
HSL的颜色模型如图所示:
H是英文Hue的首字母,表示色相,即组成可见光谱的单色。红色在0度,绿色在120度,蓝色在240度,以此方向过渡。
S是英文Saturation的首字母,表示饱和度,等于0时为灰色。在最大饱和度1时,具有最纯的色光。
L是英文Lightness的首字母,表示亮度,等于0时为黑色,等于0.5时是色彩最鲜明的状态,等于1时为白色。
示例:
请参见示例程序中的“彩虹”。 2.2.9HSVtoRGB
该函数用于转换HSV颜色为RGB颜色。 COLORREFHSVtoRGB(floatH,floatS,floatV); 参数:
H原HSV颜色模型的Hue(色相)分量,0<=H<360。
S原HSV颜色模型的Saturation(饱和度)分量,0<=S<=1。 V原HSV颜色模型的Value(明度)分量,0<=V<=1。 返回值:
对应的RGB颜色。 说明: HSV又称HSB。
HSV的颜色模型如图所示:
H是英文Hue的首字母,表示色相,即组成可见光谱的单色。红色在0度,绿色在120度,蓝色在240度,以此方向过渡。
S是英文Saturation的首字母,表示饱和度,等于0时为灰色。在最大饱和度1时,每一色相具有最纯的色光。
V是英文Value的首字母,表示明度,等于0时为黑色,在最大明度1时,是色彩最鲜明的状态。
示例:
HSV颜色模型类似于HSL,示例程序中的“彩虹”是HSL模型的操作范例,可以参考。 2.2.10RGB
RGB宏用于通过红、绿、蓝颜色分量合成颜色。 COLORREFRGB(
BYTEbyRed,//颜色的红色部分 BYTEbyGreen,//颜色的绿色部分 BYTEbyBlue//颜色的蓝色部分 ); 参数:
byRed颜色的红色部分,取值范围:0~255。 byGreen颜色的绿色部分,取值范围:0~255。 byBlue颜色的蓝色部分,取值范围:0~255。 返回值:
返回合成的颜色。 说明:
可以通过GetRValue、GetGValue、GetBValue宏从颜色中分离出红、绿、蓝颜色分量。 注:
RGB宏在WindowsSDK中定义。 2.2.11RGBtoGRAY
该函数用于返回与指定颜色对应的灰度值颜色。 COLORREFRGBtoGRAY(COLORREFrgb); 参数:
rgb原RGB颜色。 2.2.12RGBtoHSL
该函数用于转换RGB颜色为HSL颜色。
voidRGBtoHSL(COLORREFrgb,float*H,float*S,float*L); 参数:
rgb原RGB颜色。
H用于返回HSL颜色模型的Hue(色相)分量,0<=H<360。
S用于返回HSL颜色模型的Saturation(饱和度)分量,0<=S<=1。 L用于返回HSL颜色模型的Lightness(亮度)分量,0<=L<=1。 说明:
HSL详见HSLtoRGB。
2.2.13RGBtoHSV
该函数用于转换RGB颜色为HSV颜色。
voidRGBtoHSV(COLORREFrgb,float*H,float*S,float*V); 参数:
rgb原RGB颜色。
H用于返回HSV颜色模型的Hue(色相)分量,0<=H<360。
S用于返回HSV颜色模型的Saturation(饱和度)分量,0<=S<=1。 V用于返回HSV颜色模型的Value(明度)分量,0<=V<=1。 2.2.14setbkcolor
这个函数用于设置当前绘图背景色。 voidsetbkcolor(COLORREFcolor); 参数:color指定要设置的背景颜色。 说明:
“背景色”是调色板绘图模式下的概念,所谓的背景色,是调色板中编号为0的颜色,可以通过修改编号0的颜色达到随时修改背景色的目的。在调色板模式下,显存中保存的是每种颜色在调色板中的编号。在EasyX中,已经废弃了调色板模式。
真彩色绘图模式下没有调色板,显存中直接保存每个点的颜色,没有背景色的概念。 EasyX采用真彩色绘图模式,同时使用背景色,目的有两个: 1.当文字背景不是透明时,指定文字的背景色。
2.执行cleardevice()或clearcliprgn()时,使用该颜色清空屏幕或裁剪区。
示例:
以下示例实现在蓝色背景下绘制红色的矩形: #include
//初始化绘图窗口 initgraph(640,480); //设置背景色为蓝色 setbkcolor(BLUE); //用背景色清空屏幕 cleardevice(); //设置绘图色为红色 setcolor(RED); //画矩形
rectangle(100,100,300,300); //按任意键退出 getch();
closegraph(); }
2.2.15setcolor
这个函数用于设置当前绘图前景色。 voidsetcolor(COLORREFcolor); 参数:color要设置的前景颜色。 2.3绘制图形相关函数 2 2.3.2arc
这个函数用于画椭圆弧。
voidarc(intleft,inttop,intright,intbottom,doublestangle,doubleendangle); 参数:
left圆弧所在椭圆的外切矩形的左上角x坐标。 top圆弧所在椭圆的外切矩形的左上角y坐标。 right圆弧所在椭圆的外切矩形的右下角x坐标。 bottom圆弧所在椭圆的外切矩形的右下角y坐标。 stangle圆弧的起始角的弧度。 endangle圆弧的终止角的弧度。 2.3.3bar
这个函数用于画无边框填充矩形。
voidbar(intleft,inttop,intright,intbottom); 参数:
left矩形左部x坐标。 top矩形上部y坐标。 right矩形右部x坐标。 bottom矩形下部y坐标。 2.3.4bar3d
这个函数用于画有边框三维填充矩形。
voidbar3d(intleft,inttop,intright,intbottom,intdepth,booltopflag); 参数:
left矩形左部x坐标。 top矩形上部y坐标。 right矩形右部x坐标。 bottom矩形下部y坐标。 depth矩形深度。
topflag为false时,将不画矩形的三维顶部。该选项可用来画堆叠的三维矩形。 2.3.5circle 这个函数用于画圆。
voidcircle(intx,inty,intradius); 参数:
x圆的圆心x坐标。 y圆的圆心y坐标。 radius圆的半径。 2.3.6drawpoly
这个函数用于画多边形。
voiddrawpoly(intnumpoints,constint*polypoints); 参数:
numpoints多边形点的个数。
polypoints每个点的坐标,数组元素个数为numpoints*2。
该函数并不会自动连接多边形首尾。如果需要画封闭的多边形,请将最后一个点设置为与第一点相同。
以下局部代码绘制一个封闭的三角形:
intpoints[]={50,200,200,200,200,50,50,200}; drawpoly(4,points); 2.3.7ellipse 这个函数用于画椭圆。
voidellipse(intleft,inttop,intright,intbottom); 参数:
left椭圆外切矩形的左上角x坐标。 top椭圆外切矩形的左上角y坐标。 right椭圆外切矩形的右下角x坐标。 bottom椭圆外切矩形的右下角y坐标。 说明:
由于屏幕像素点坐标是整数,因此用圆心和半径描述的椭圆无法处理直径为偶数的情况。而该函数的参数采用外切矩形来描述椭圆,可以解决这个问题。
当外切矩形为正方形时,可以绘制圆。 2.3.8fillcircle 这个函数用于画填充圆。
voidfillcircle(intx,inty,intradius); 参数:
x圆心的x坐标。 y圆心的y坐标。 radius圆的半径。 说明:
该函数使用当前线形和当前填充样式绘制有外框的填充圆。 2.3.9fillellipse