Easy 指导手册.docx

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

Easy 指导手册.docx

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

Easy 指导手册.docx

Easy指导手册

EasyX指导手册

制作人:

jianxiawzx

一、基本概念

颜色

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,);

坐标

在EasyX中,坐标分两种:

逻辑坐标和物理坐标。

逻辑坐标

逻辑坐标是在程序中用于绘图的坐标体系。

坐标默认的原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。

坐标原点可以通过setorigin()函数修改;

坐标轴方向可以通过setaspectratio()函数修改;

缩放比例可以通过setaspectratio()函数修改。

在本手册中,凡是没有注明的坐标,均指逻辑坐标。

物理坐标

物理坐标是描述设备的坐标体系。

坐标原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。

坐标原点、坐标轴方向、缩放比例都不能改变。

设备

所谓“设备”,简单来说,就是绘图表面。

在EasyX中,设备分两种,一种是默认的绘图窗口,另一种是IMAGE对象。

通过SetWorkingImage()函数可以设置当前用于绘图的设备。

设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。

二、绘图函

这个函数用于清空裁剪区的屏幕内容。

voidclearcliprgn();

这个函数用于清除屏幕内容。

具体的,是用当前背景色清空屏幕,并将当前点移至(0,0)。

voidcleardevice();

这个函数用于关闭图形环境。

voidclosegraph();

这个函数用于获取当前缩放因子。

voidgetaspectratio(float*pxasp,float*pyasp);

参数:

pxasp返回x方向上的缩放因子。

pyasp返回y方向上的缩放因子。

这个函数用于获取绘图窗口句柄。

HWNDGetHWnd();

在Windows下,句柄是一个窗口的标识,得到句柄后,可以使用WindowsSDK中的各种命令实现对窗口的控制。

示例:

文字背景不是透明时,指定文字的背景色。

2.执行cleardevice()或clearcliprgn()时,使用该颜色清空屏幕或裁剪区。

示例:

以下示例实现在蓝色背景下绘制红色的矩形:

#include<>

#include<>

voidmain()

{

屏幕颜色"指绘制所经过的屏幕像素点的颜色。

3."当前颜色"是指通过setcolor设置的用于当前绘制的颜色。

文字输出相关函数

相关函数和数据如下:

函数或数据

描述

getfont

获取当前字体样式。

LOGFONT

保存字体样式的结构体。

outtext

在当前位置输出字符串。

outtextxy

在指定位置输出字符串。

drawtext

在指定区域内以指定格式输出字符串。

setbkmode

设置输出文字时的背景模式。

setfont

设置当前字体样式。

textheight

获取字符串实际占用的像素高度。

textwidth

获取字符串实际占用的像素宽度。

这个函数用于在指定区域内以指定格式输出字符串。

intdrawtext(LPCTSTRstr,RECT*pRect,UINTuFormat);

intdrawtext(TCHARc,RECT*pRect,UINTuFormat);

参数:

str待输出的字符串。

pRect指定的矩形区域的指针。

某些uFormat标志会使用这个矩形区域做返回值。

详见后文说明。

uFormat指定格式化输出文字的方法。

详见后文说明。

C待输出的字符。

返回值:

函数执行成功时,返回文字的高度。

如果指定了DT_VCENTER或DT_BOTTOM标志,返回值表示从pRect->top到输出文字的底部的偏移量。

如果函数执行失败,返回0。

说明:

注:

下文关于文字位置的描述,均是相对于pRect指向的矩形而言。

标志

描述

DT_BOTTOM

调整文字位置到矩形底部,仅当和DT_SINGLELINE一起使用时有效。

DT_CALCRECT

检测矩形的宽高。

如果有多行文字,drawtext使用pRect指定的宽度,并且扩展矩形的底部以容纳每一行文字。

如果只有一行文字,drawtext修改pRect的右边以容纳最后一个文字。

无论哪种情况,drawtext都返回格式化后的文字高度,并且不输出文字。

DT_CENTER

文字水平居中。

DT_EDITCONTROL

以单行编辑的方式复制可见文本。

具体的说,就是以字符的平均宽度为计算依据,同时用这个方式应用于编辑控制,并且这种方式不显示可见部分的最后一行。

DT_END_ELLIPSIS

对于文本显示,如果字符串的末字符不在矩形内,它会被截断并以省略号标识。

如果是一个单词而不是一个字符,其末尾超出了矩形范围,它不会被截断。

字符串不会被修改,除非指定了DT_MODIFYSTRING标志。

DT_EXPANDTABS

展开TAB符号。

默认每个TAB占8个字符位置。

注意,DT_WORD_ELLIPSIS、DT_PATH_ELLIPSIS和DT_END_ELLIPSIS不能和DT_EXPANDTABS一起用。

DT_EXTERNALLEADING

在行高里包含字体的行间距。

通常情况下,行间距不被包含在正文的行高里。

DT_HIDEPREFIX

Windows2000/XP:

忽略文字中的前缀字符(&),并且前缀字符后面的字符不会出现下划线。

其他前缀字符仍会被处理。

例如:

输入字符串:

"A&bc&&d"

通常输出:

"Abc&d"

DTDT_HIDEPREFIX:

"Abc&d"

DT_INTERNAL

使用系统字体计算文字的宽高等属性。

DT_LEFT

文字左对齐。

DT_MODIFYSTRING

修改指定字符串为显示出的正文。

仅当和DT_END_ELLIPSIS或DT_PATH_ELLIPSIS标志同时使用时有效。

DT_NOCLIP

使输出文字不受pRect裁剪限制。

使用DT_NOCLIP会使drawtext执行稍快一些。

DT_NOFULLWIDTHCHARBREAK

Windows2000/XP:

防止换行符插入到DBCS(double-widecharacterstring,即宽字符串),换行规则相当于SBCS字符串。

仅当和DT_WORDBREAK一起使用时有效。

例如,汉字就是宽字符,设置该标志后,连续的汉字会像英文单词一样不被换行符中断。

DT_NOPREFIX

关闭前缀字符的处理。

通常,DrawText解释前缀转义符&为其后的字符加下划线,解释&&为显示单个&。

指定DT_NOPREFIX,这种处理被关闭。

例如:

输入字符串:

"A&bc&&d"

通常输出:

"Abc&d"

DT_NOPREFIX:

"A&bc&&d"

DT_PATH_ELLIPSIS

对于显示的文字,用省略号替换字符串中间的字符以便容纳于矩形内。

如果字符串包含反斜杠(\),DT_PATH_ELLIPSIS尽可能的保留最后一个反斜杠后面的文字。

字符串不会被修改,除非指定了DT_MODIFYSTRING标志。

DT_PREFIXONLY

Windows2000/XP:

仅仅在(&)前缀字符的位置下绘制一个下划线。

不绘制字符串中的任何其他字符。

例如:

输入字符串:

"A&bc&&d"

通常输出:

"Abc&d"

DT_PREFIXONLY:

"_"

DT_RIGHT

文字右对齐。

DT_RTLREADING

设置从右向左的阅读顺序(当文字是希伯来文或阿拉伯文时)。

默认的阅读顺序是从左向右。

DT_SINGLELINE

使文字显示在一行。

回车和换行符都无效。

DT_TABSTOP

设置TAB制表位。

uFormat的15–8位指定TAB的字符宽度。

默认TAB表示8个字符宽度。

注意,DT_CALCRECT、DT_EXTERNALLEADING、DT_INTERNAL、DT_NOCLIP和DT_NOPREFIX不能和DT_TABSTOP一起用。

DT_TOP

文字顶部对齐。

DT_VCENTER

文字垂直居中。

仅当和DT_SINGLELINE一起使用时有效。

DT_WORDBREAK

自动换行。

当文字超过右边界时会自动换行(不拆开单词)。

回车符同样可以换行。

DT_WORD_ELLIPSIS

截去无法容纳的文字,并在末尾增加省略号。

示例:

以下范例在屏幕中央输出字符串“HelloWorld”:

#include<>

#include<>

voidmain()

{

屏幕颜色"指绘制所经过的屏幕像素点的颜色。

3."图像颜色"是指通过IMAGE对象中的图像的颜色。

4."当前填充颜色"是指通过setfillstyle设置的用于当前填充的颜色。

5.查看全部的三元光栅操作码请点这里:

三元光栅操作码。

示例:

以下局部代码将屏幕(0,0)起始的100x100的图像拷贝至(200,200)位置:

IMAGEimg;

getimage(&img,0,0,100,100);

putimage(200,200,&img);

这个函数用于调整指定绘图设备的尺寸。

voidResize(IMAGE*pImg,intwidth,intheight);

参数:

pImg指定要调整尺寸的绘图设备。

如果为NULL,则表示默认绘图窗口。

width指定绘图设备的宽度。

height指定绘图设备的高度。

这个函数用于旋转IMAGE中的绘图内容。

voidrotateimage(IMAGE*dstimg,IMAGE*srcimg,doubleradian,

COLORREFbkcolor=BLACK,boolautosize=false,boolhighquality=true);

参数:

dstimg指定目标IMAGE对象指针,用来保存旋转后的图像。

srcimg指定原IMAGE对象指针。

radian指定旋转的弧度。

bkcolor指定旋转后产生的空白区域的颜色。

默认为黑色。

autosize指定目标IMAGE对象是否自动调整尺寸以完全容纳旋转后的图像。

默认为false。

srcimg指定是否采用高质量的旋转。

在追求性能的场合请使用低质量旋转。

默认为true。

示例:

以下示例加载图片"C:

\\"并旋转30度(PI/6),然后显示在左上角:

#include<>

#include<>

#

voidmain()

{

//绘图环境初始化

initgraph(640,480);

//定义图像

IMAGEimg1,img2;

//从文件加载图像

loadimage(&img1,_T("C:

\\"));

//旋转图像30度(PI/6)

rotateimage(&img2,&img1,PI/6);

//显示旋转后的图像

putimage(0,0,&img2);

//按任意键退出

getch();

closegraph();

}

这个函数用于保存绘图内容至图片文件。

voidsaveimage(LPCTSTRstrFileName,IMAGE*pImg=NULL);

参数:

strFileName指定文件名。

pImg指向的图片将保存到该文件中,图片以BMP格式保存,已存在的文件将被覆盖。

pImg指向IMAGE对象的指针。

如果为NULL,表示绘图窗口。

示例:

以下示例保存绘图窗口的内容为"D:

\\":

#include<>

#include<>

voidmain()

{

//绘图环境初始化

initgraph(640,480);

//绘制图像

outtextxy(100,100,"HelloWorld!

");

//保存绘制的图像

saveimage("D:

\\");

//按任意键退出

getch();

closegraph();

}

这个函数用于设定当前的绘图设备。

voidSetWorkingImage(IMAGE*pImg=NULL);

参数:

pImg绘图设备指针。

如果为NULL,表示绘图设备为默认绘图窗口。

说明:

如果需要对某个IMAGE做绘图操作,可以通过该函数将其设置为当前的绘图设备,之后所有的绘图语句都会绘制在该IMAGE上面。

将参数置为NULL可恢复对默认绘图窗口的绘图操作。

示例:

#include<>

#include<>

voidmain()

{

//初始化绘图窗口

initgraph(640,480);

//创建200x200的img对象

IMAGEimg(200,200);

//设置绘图目标为img对象

SetWorkingImage(&img);

//以下绘图操作都会绘制在img对象上面

line(0,100,200,100);

line(100,0,100,200);

circle(100,100,50);

//设置绘图目标为绘图窗口

SetWorkingImage();

//将img对象显示在绘图窗口中

putimage(220,140,&img);

//按任意键退出

getch();

closegraph();

}

三元光栅操作码

这篇补充文档列出了putimage函数支持的所有三元光栅操作码。

三元光栅操作码定义了源图像与屏幕图像的位合并形式,这个合并形式是以下三个操作数对应像素的布尔运算:

操作数

含义

D

屏幕图像

P

当前填充颜色

S

源图像

布尔运算符包括以下几种:

操作

含义

a

位的AND运算(双目运算)

n

位的NOT运算(单目运算)

o

位的OR运算(双目运算)

x

位的XOR运算(双目运算)

所有的布尔操作都采用逆波兰表示法,例如,“当前填充颜色or源图像”可表示为:

PSo。

(当然SPo也是等价的,这里只列举出了其中一种等价格式)

三元光栅操作码是__int32类型,其高位字是布尔操作索引,低位字是操作码。

布尔操作索引的16个位中,高8位用0填充,低8位是当前填充颜色、源图像和屏幕的布尔操作结果。

例如,PSo和DPSoo的操作索引如下:

P

S

D

PSo

DPSoo

0

0

0

0

0

0

0

1

0

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

1

1

0

1

1

1

1

1

0

1

1

1

1

1

1

1

操作索引:

00FCh

00FEh

上例中,PSo的操作索引是00FC(从下往上读),DPSoo的是00FE。

这些值定义了相应的三元光栅操作码在“三元光栅操作码”表格中的位置,PSo在252(00FCh)行,DPSoo在254(00FEh)行。

常用的三元光栅操作码已经定义了常量名,程序中可以直接使用。

三元光栅操作码

布尔功能(16进制)

光栅操作(16进制)

布尔功能的逆波兰表示法

常量名

00

00000042

0

BLACKNESS

01

00010289

DPSoon

02

00020C89

DPSona

03

000300AA

PSon

04

00040C88

SDPona

05

000500A9

DPon

06

00060865

PDSxnon

07

000702C5

PDSaon

08

00080F08

SDPnaa

09

00090245

PDSxon

0A

000A0329

DPna

0B

000B0B2A

PSDnaon

0C

000C0324

SPna

0D

000D0B25

PDSnaon

0E

000E08A5

PDSonon

0F

000F0001

Pn

10

00100C85

PDSona

11

001100A6

DSon

NOTSRCERASE

12

00120868

SDPxnon

13

001302C8

SDPaon

14

00140869

DPSxnon

15

001502C9

DPSaon

16

00165CCA

PSDPSanaxx

17

00171D54

SSPxDSxaxn

18

00180D59

SPxPDxa

19

00191CC8

SDPSanaxn

1A

001A06C5

PDSPaox

1B

001B0768

SDPSxaxn

1C

001C06CA

PSDPaox

1D

001D0766

DSPDxaxn

1E

001E01A5

PDSox

1F

001F0385

PDSoan

20

00200F09

DPSnaa

21

00210248

SDPxon

22

00220326

DSna

23

00230B24

SPDnaon

24

00240D55

SPxDSxa

25

00251CC5

PDSPanaxn

26

002606C8

SDPSaox

27

00271868

SDPSxnox

28

00280369

DPSxa

29

002916CA

PSDPSaoxxn

2A

002A0CC9

DPSana

2B

002B1D58

SSPxPDxaxn

2C

002C0784

SPDSoax

2D

002D060A

PSDnox

2E

002E064A

PSDPxox

2F

002F0E2A

PSDnoan

30

0030032A

PSna

31

00310B28

SDPnaon

32

00320688

SDPSoox

33

00330008

Sn

NOTSRCCOPY

34

003406C4

SPDSaox

35

00351864

SPDSxnox

36

003601A8

SDPox

37

00370388

SDPoan

38

0038078A

PSDPoax

39

00390604

SPDnox

3A

003A0644

SPDSxox

3B

003B0E24

SPDnoan

3C

003C004A

PSx

3D

003D18A4

SPDSonox

3E

003E1B24

SPDSnaox

3F

003F00EA

PSan

40

00400F0A

PSDnaa

41

00410249

DPSxon

42

00420D5D

SDxPDxa

43

00431CC4

SPDSanaxn

44

00440328

SDna

SRCERASE

45

00450B29

DPSnaon

46

004606C6

DSPDaox

47

0047076A

PSDPxaxn

48

00480368

SDPxa

49

004916C5

PDSPDaoxxn

4A

004A0789

DPSDoax

4B

004B0605

PDSnox

4C

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

当前位置:首页 > 自然科学 > 物理

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

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