EasyX指导手册.docx

上传人:b****6 文档编号:15583122 上传时间:2023-07-05 格式:DOCX 页数:74 大小:40.45KB
下载 相关 举报
EasyX指导手册.docx_第1页
第1页 / 共74页
EasyX指导手册.docx_第2页
第2页 / 共74页
EasyX指导手册.docx_第3页
第3页 / 共74页
EasyX指导手册.docx_第4页
第4页 / 共74页
EasyX指导手册.docx_第5页
第5页 / 共74页
EasyX指导手册.docx_第6页
第6页 / 共74页
EasyX指导手册.docx_第7页
第7页 / 共74页
EasyX指导手册.docx_第8页
第8页 / 共74页
EasyX指导手册.docx_第9页
第9页 / 共74页
EasyX指导手册.docx_第10页
第10页 / 共74页
EasyX指导手册.docx_第11页
第11页 / 共74页
EasyX指导手册.docx_第12页
第12页 / 共74页
EasyX指导手册.docx_第13页
第13页 / 共74页
EasyX指导手册.docx_第14页
第14页 / 共74页
EasyX指导手册.docx_第15页
第15页 / 共74页
EasyX指导手册.docx_第16页
第16页 / 共74页
EasyX指导手册.docx_第17页
第17页 / 共74页
EasyX指导手册.docx_第18页
第18页 / 共74页
EasyX指导手册.docx_第19页
第19页 / 共74页
EasyX指导手册.docx_第20页
第20页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EasyX指导手册.docx

《EasyX指导手册.docx》由会员分享,可在线阅读,更多相关《EasyX指导手册.docx(74页珍藏版)》请在冰点文库上搜索。

EasyX指导手册.docx

EasyX指导手册

EasyX指导手册

制作人:

jianxiawzx

一、基本概念

1.1颜色

EasyX使用24bit真彩色,不再支持调色板模式。

表示颜色有以下几种办法:

1.用预定义颜色常量,如下:

常量

颜色

常量

颜色

BLACK

0

DARKGRAY

0x545454

深灰

BLUE

0xA80000

LIGHTBLUE

0xFC5454

亮蓝

GREEN

0x00A800

绿

LIGHTGREEN

0x54FC54

亮绿

CYAN

0xA8A800

LIGHTCYAN

0xFCFC54

亮青

RED

0x0000A8

LIGHTRED

0x5454FC

亮红

MAGENTA

0xA800A8

LIGHTMAGENTA

0xFC54FC

亮紫

BROWN

0x0054A8

YELLOW

0x54FCFC

LIGHTGRAY

0xA8A8A8

浅灰

WHITE

0xFCFCFC

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)以释放该区域对应的系统资源。

示例:

以下代码用于创建一个矩形裁剪区,并在该裁剪区内画圆,请观察裁剪效果:

#include

#include

voidmain()

{

//初始化绘图窗口

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.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指定的颜色。

返回值:

指定颜色中的红色值,值的范围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

#include

voidmain()

{

//初始化绘图窗口

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

这个函数用于画填充的椭圆。

voidfillellipse(intleft,inttop,intright,intbottom);

参数:

left椭圆外切矩形的左上角x坐标。

top椭圆外切矩形的左上角y坐标。

right椭圆外切矩形的右下角x坐标。

bottom椭圆外切矩形的右下角y坐标。

说明:

该函数使用当前线形和当前填充样式绘制有外框的填充椭圆。

由于屏幕像素点坐标是整数,因此用圆心和半径描述的椭圆无法处理直径为偶数的情况。

而该函数的参数采用外切矩形来描述椭圆,可以解决这个问题。

当外切矩形为正方形时,可以绘制填充圆。

2.3.10fillpoly

这个函数用于画填充的多边形。

voidfillpoly(intnumpoints,constint*polypoints);

参数:

numpoints多边形点的个数。

polypoints每个点的坐标,数组元素个数为numpoints*2。

该函数会自动连接多边形首尾。

说明:

该函数使用当前线形和当前填充样式绘制有外框的填充多边形。

示例:

以下局部代码绘制一个封闭的填充三角形:

intpoints[]={50,200,200,200,200,50};

fillpoly(3,points);

2.3.11floodfill

这个函数用于填充区域。

voidfloodfill(intx,inty,COLORREFborder)

参数:

x待填充区域内任意点的x坐标。

y待填充区域内任意点的y坐标。

border待填充区域的边界颜色。

填充动作在该颜色围成的封闭区域内填充。

说明:

填充动作以(x,y)为起点,向周围扩散,直到遇到border指定的颜色才会终止。

所以,指定的区域必须是封闭的。

填充的颜色和样式可以使用setfillstyle函数指定。

2.3.12getfillstyle

这个函数用于获取当前填充类型。

voidgetfillstyle(COLORREF*pcolor,int*ppattern=NULL,char*pupattern=NULL);

参数:

pcolor返回当前填充色。

ppattern返回当前填充图案。

详见setfillstyle。

pupattern指向char[8]的指针,如果该指针不为空,且当前填充图案为USER_FILL,返回当前的自定义填充样式。

2.3.13getheight

这个函数用于获取绘图区高度。

intgetheight();

2.3.14getlinestyle

这个函数用于获取当前线形。

voidgetlinestyle(int*plinestyle,WORD*pupattern=NULL,int*pthickness=NULL);

参数:

plinestyle返回当前线型。

详见setlinestyle。

pupattern返回当前自定义线形数据。

pthickness返回当前线形宽度。

2.3.15getpixel

这个函数用于获取点的颜色。

COLORREFgetpixel(intx,inty);

参数:

x要获取颜色的x坐标。

y要获取颜色的y坐标。

2.3.16getwidth

该函数用于获取绘图区宽度。

intgetwidth();

2.3.17getx

这个函数用于获取当前x坐标。

intgetx();

2.3.18gety

这个函数用于获取当前y坐标。

intgety();

2.3.19line

这个函数用于画线。

还可以用linerel和lineto画线。

voidline(intx1,inty1,intx2,inty2);

参数:

x1线的起始点的x坐标。

y1线的起始点的y坐标。

x2线的终止点的x坐标。

y2线的终止点的y坐标。

2.3.20linerel

这个函数用于画线。

还可以用line和lineto画线。

voidlinerel(intdx,intdy);

参数:

dx从“当前点”开始画线,沿x轴偏移dx。

dy从“当前点”开始画线,沿y轴偏移dy。

2.3.21lineto

这个函数用于画线。

还可以用line和linerel画线。

voidlineto(intx,inty);

参数:

x目标点的x坐标(从“当前点”开始画

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2