EasyX指导手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EasyX指导手册制作人:jianxiawzx一、基本概念1.1颜色EasyX使用24bit真彩色,不再支持调色板模式。表示颜色有以下几种办法:1.用预定义颜色常量,如下:常量值颜色常量值颜色BLACK0黑DARKGRAY0x545454深灰BLUE0xA80000蓝LIGHTBLUE0xFC5454亮蓝GREEN0x00A800绿LIGHTGREEN0x54FC54亮绿CYAN0xA8A800青LIGHTCYAN0xFCFC54亮青RED0x0000A8红LIGHTRED0x5454FC亮红MAGENTA0xA800A8紫LIGHTMAGENTA0xFC54FC亮紫BROWN0x0054A8棕YELLOW0x54FCFC黄LIGHTGRAY0xA8A8A8浅灰WHITE0xFCFCFC白2.用16进制的颜色表示,形式为:0xbbggrr(bb=蓝,gg=绿,rr=红)3.用RGB宏合成颜色。详见RGB。4.用HSLtoRGB、HSVtoRGB转换其他色彩模型到RGB颜色。详见HSLtoRGB、HSVtoRGB。示例:以下是部分设置前景色的方法:setcolor(0xff0000);setcolor(BLUE);setcolor(RGB(0,0,255));setcolor(HSLtoRGB(240,1,0.5));1.2坐标在EasyX中,坐标分两种:逻辑坐标和物理坐标。逻辑坐标逻辑坐标是在程序中用于绘图的坐标体系。坐标默认的原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。坐标原点可以通过setorigin()函数修改;坐标轴方向可以通过setaspectratio()函数修改;缩放比例可以通过setaspectratio()函数修改。在本手册中,凡是没有注明的坐标,均指逻辑坐标。物理坐标物理坐标是描述设备的坐标体系。坐标原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。坐标原点、坐标轴方向、缩放比例都不能改变。1.3设备所谓“设备”,简单来说,就是绘图表面。在EasyX中,设备分两种,一种是默认的绘图窗口,另一种是IMAGE对象。通过SetWorkingImage()函数可以设置当前用于绘图的设备。设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。二、绘图函2.1.1clearcliprgn这个函数用于清空裁剪区的屏幕内容。voidclearcliprgn();2.1.2cleardevice这个函数用于清除屏幕内容。具体的,是用当前背景色清空屏幕,并将当前点移至(0,0)。voidcleardevice();2.1.3closegraph这个函数用于关闭图形环境。voidclosegraph();2.1.4getaspectratio这个函数用于获取当前缩放因子。voidgetaspectratio(float*pxasp,float*pyasp);参数:pxasp返回x方向上的缩放因子。pyasp返回y方向上的缩放因子。2.1.5GetHWnd这个函数用于获取绘图窗口句柄。HWNDGetHWnd();在Windows下,句柄是一个窗口的标识,得到句柄后,可以使用WindowsSDK中的各种命令实现对窗口的控制。示例://获得窗口句柄HWNDhWnd=GetHWnd();//使用API函数修改窗口名称SetWindowText(hWnd,Hello!);2.1.6graphdefaults这个函数用于重置视图、当前点、绘图色、背景色、线形、填充类型、字体为默认值。voidgraphdefaults();2.1.7initgraph这个函数用于初始化绘图环境。HWNDinitgraph(intWidth,intHeight,intFlag=NULL);参数:Width绘图环境的宽度。Height绘图环境的高度。Style绘图环境的样式,默认为NULL。可为以下值:值含义SHOWCONSOLE表示可以保留原控制台窗口。2.1.8setaspectratio这个函数用于设置当前缩放因子。voidsetaspectratio(floatxasp,floatyasp);参数:Xaspx方向上的缩放因子。例如绘制宽度为100的矩形,实际的绘制宽度为100*xasp。Yaspy方向上的缩放因子。例如绘制高度为100的矩形,实际的绘制高度为100*yasp。说明:如果缩放因子为负,可以实现坐标轴的翻转。例如,执行setaspectratio(1,-1);后,可使y轴向上为正。2.1.9setcliprgn这个函数用于设置当前绘图设备的裁剪区。voidsetcliprgn(HRGNhrgn);参数:hrgn区域的句柄。创建区域所使用的坐标为物理坐标。如果该值为NULL,表示取消之前设置的裁剪区。说明:HRGN是Windows定义的表示区域的句柄。将该区域设置为裁剪区后,任何区域外的绘图都将无效(但仍然可以通过操作显存在裁剪区外绘图)。可以使用WindowsGDI函数创建一个区域。例如,创建矩形区域可以使用函数:HRGNCreateRectRgn(intleft,inttop,intright,intbottom);此外,还可以使用函数CreateEllipticRgn创建椭圆形的区域,使用CreatePolygonRgn创建多边形的区域等等。还可以使用CombineRgn组合区域。更多关于区域的GDI函数,请参考MSDN中的RegionFunctions。注意:创建区域后,如果不再使用,请执行DeleteObject(HRGNhrgn)以释放该区域对应的系统资源。示例:以下代码用于创建一个矩形裁剪区,并在该裁剪区内画圆,请观察裁剪效果:#includegraphics.h#includeconio.hvoidmain(){//初始化绘图窗口initgraph(640,480);//创建一个矩形区域HRGNrgn=CreateRectRgn(100,100,200,200);//将该矩形区域设置为裁剪区setcliprgn(rgn);//不再使用rgn,清理rgn占用的系统资源DeleteObject(rgn);//画圆,受裁剪区影响,只显示出四段圆弧circle(150,150,55);//取消之前设置的裁剪区setcliprgn(NULL);//画圆,不再受裁剪区影响,显示出一个完整的圆circle(150,150,60);//按任意键退出getch();closegraph();}2.1.10setorigin这个函数用于设置坐标原点。voidsetorigin(intx,inty);x原点的x坐标(使用物理坐标)。y原点的y坐标(使用物理坐标)。2.2颜色表示及相关函数2.2.1相关函数和数据如下:函数或数据描述getbkcolor获取当前绘图背景色。getcolor获取当前绘图前景色GetBValue返回指定颜色中的蓝色值。GetGValue返回指定颜色中的绿色值。GetRValue返回指定颜色中的红色值。HSLtoRGB转换HSL颜色为RGB颜色。HSVtoRGB转换HSV颜色为RGB颜色。RGB通过红、绿、蓝颜色分量合成颜色。RGBtoGRAY转换RGB颜色为灰度颜色。RGBtoHSL转换RGB颜色为HSL颜色。RGBtoHSV转换RGB颜色为HSV颜色。setbkcolor设置当前绘图背景色。setcolor设置当前绘图前景色。BGR交换颜色中的红色和蓝色。2.2.2BGRBGR宏用于交换颜色中的红色和蓝色。COLORREFBGR(COLORREFcolor);参数:color需要交换红色和蓝色的颜色。返回值:返回交换红色和蓝色后的颜色。说明:颜色在内存中的表示形式为:0xbbggrr(bb=蓝,gg=绿,rr=红),但是显存中的颜色表现形式为0xrrggbb。注意,两者的红色和蓝色是相反的。直接操作显存时,可以通过BGR宏交换颜色的红色和蓝色部分。2.2.3getbkcolor这个函数用于获取当前绘图背景色。COLORREFgetbkcolor();2.2.4GetBValueGetBValue宏用于返回指定颜色中的蓝色值。BYTEGetBValue(COLORREFrgb);参数:rgb指定的颜色。返回值:指定颜色中的蓝色值,值的范围0~255。说明:GetBValue宏在WindowsSDK中定义。2.2.5getcolor这个函数用于获取当前绘图前景色COLORREFgetcolor();2.2.6GetGValueGetGValue宏用于返回指定颜色中的绿色值。BYTEGetGValue(COLORREFrgb);参数:rgb指定的颜色。返回值:指定颜色中的绿色值,值的范围0~255。说明:GetGValue宏在WindowsSDK中定义。2.2.7GetRValueGetRValue宏用于返回指定颜色中的红色值。BYTEGetRValue(COLORREFrgb);参数:rgb指定的颜色。返回值:指定颜色中的红色值,值的范围0~255。说明:GetRValue宏在WindowsSDK中定义。2.2.8HSLtoRGB该函数用于转换HSL颜色为RGB颜色。COLORREFHSLtoRGB(floatH,floatS,floatL);参数:H原HSL颜色模型的Hue(色相)分量,0=H360。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=H360。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.10RGBRGB宏用于通过红、绿、蓝颜色分量合成颜色。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(COLORREFrg

1 / 52
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功