EasyX指导手册 制作人:jianxiawzx 一、基本概念 1.1颜色
EasyX使用24bit真彩色,不再支持调色板模式。 表示颜色有以下几种办法: 1.用预定义颜色常量,如下: 常量 BLACK BLUE GREEN CYAN RED MAGENTA BROWN
0 0xA80000 0x00A800 0xA8A800 0x0000A8 0xA800A8 0x0054A8
值
颜色 黑 蓝 绿 青 红 紫 棕
常量 DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED YELLOW
值 0x545454 0xFC5454 0x54FC54 0xFCFC54 0x5454FC 0x54FCFC 0xFCFCFC
颜色 深灰 亮蓝 亮绿 亮青 亮红 亮紫 黄 白
LIGHTMAGENTA 0xFC54FC
LIGHTGRAY 0xA8A8A8 浅灰 WHITE
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,\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)以释放该区域对应的系统资源。
示例:
以下代码用于创建一个矩形裁剪区,并在该裁剪区内画圆,请观察裁剪效果: #include
//初始化绘图窗口 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 HSVtoRGB RGB RGBtoGRAY RGBtoHSL RGBtoHSV setbkcolor setcolor
描述
获取当前绘图背景色。 获取当前绘图前景色 返回指定颜色中的蓝色值。 返回指定颜色中的绿色值。 返回指定颜色中的红色值。 转换HSL颜色为RGB颜色。 转换HSV颜色为RGB颜色。 通过红、绿、蓝颜色分量合成颜色。
转换RGB颜色为灰度颜色。 转换RGB颜色为HSL颜色。 转换RGB颜色为HSV颜色。 设置当前绘图背景色。 设置当前绘图前景色。
BGR 2.2.2BGR
交换颜色中的红色和蓝色。
BGR宏用于交换颜色中的红色和蓝色。 COLORREFBGR(COLORREFcolor);
参数:color需要交换红色和蓝色的颜色。 返回值:
返回交换红色和蓝色后的颜色。 说明:
颜色在内存中的表示形式为:0xbbggrr(bb=蓝,gg=绿,rr=红),但是显存中的颜色表现形式为0xrrggbb。注意,两者的红色和蓝色是相反的。直接操作显存时,可以通过BGR宏交换颜色的红色和蓝色部分。
2.2.3getbkcolor
这个函数用于获取当前绘图背景色。 COLORREFgetbkcolor(); 2.2.4GetBValue
GetBValue宏用于返回指定颜色中的蓝色值。 BYTEGetBValue(COLORREFrgb); 参数:rgb指定的颜色。 返回值:
指定颜色中的蓝色值,值的范围0~255。 说明:
GetBValue宏在WindowsSDK中定义。 2.2.5getcolor
这个函数用于获取当前绘图前景色 COLORREFgetcolor(); 2.2.6GetGValue
GetGValue宏用于返回指定颜色中的绿色值。 BYTEGetGValue(COLORREFrgb); 参数:rgb指定的颜色。 返回值:
指定颜色中的绿色值,值的范围0~255。 说明:
GetGValue宏在WindowsSDK中定义。 2.2.7GetRValue
GetRValue宏用于返回指定颜色中的红色值。 BYTEGetRValue(COLORREFrgb); 参数:rgb指定的颜色。