easyx学习第一天笔记——基础内容


前言

10月29日在dev_c++环境下安装了easyx,并且学习了一些最基本的操作。
以笔记的形式在csdn上记录下来,以便以后查看。
学习easyx的最终目标:实现简单的图形化界面。


一、easyx基础知识

easyx基础知识这块主要包括三个小部分:
easyx颜色
easyx坐标
easyx设备

1.easyx颜色

所有颜色的基础都是红(red)、绿(green)、蓝(blue)三种颜色,所以将红、绿、蓝三种颜色根据不同的比例调配可以产生另外的需要的颜色。

颜色函数:RGB(int red,int green,int blue),三个参数的值取值范围都是[0,255]

用RGB宏合成颜色,实际上合成出来的颜色是一个十六进制的整数。

2.easyx坐标

坐标的原点默认在窗口的左上角
x轴向右为正,y轴向下为正
度量单位是像素点

3.easyx设备

设备,简单理解来说,就是指绘图表面。
自己对设备的理解就是在什么上绘图,比如说有两张纸,是在纸1上画图还是在纸2上画图。

在easyx中,设备分为两种,一种是指默认的绘图窗口,另一种是image对象。(图片)通过SetWorkingImage()函数可以设置当前绘图设备。
设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。

二、窗口函数——用来操作窗口

这块的窗口函数主要有三个:
创建并初始化窗口函数——initgraph(int width,int height,int flag);
关闭绘图窗口——closegraph();
清空绘图设备——cleardevice();

1.initgraph(int width,int height,int flag)

作用:创建并初始化窗口
参数含义:
width:
指定窗口的宽度,也可以说是长度
height:
指定窗口的高度
flag:
默认为NULL(0),此时只出现自己创建的窗口,而不会出现控制台窗口。(控制台窗口就是那个平平无奇却又功能强大的黑框框)

flag有三个值:SHOWCONSOLE,NOCLOSE,NOMINIMIZE
SHOWCONSOLE:
在显示自己创建的窗口的同时,显示控制台窗口。
NOCLOSE:
自己创建的窗口,关闭功能失效。(这个可以做个小游戏,玩不过关闭不了的那种,拿去整蛊一下xd们)
NOMINIMIZE:
自己创建的窗口,最小化功能失效。

备注:
举个例子,创建一个640*480的窗口,要求flag的三个功能同时实现。
eg: initgraph(640,480,SHOWCONSOLE | NOCLOSE | NOMINIMIZE)

2.closegraph();

作用:
关闭绘图窗口
碎碎念:
写不写这个目前还没发现对程序会有什么影响,但还是写上吧,存在即合理,万一哪一天某个程序,就是因为没写这一步然后崩了,怎么办。
关于这块有一个点需要主要,看第五条“一些要注意的点”

3.cleardevice();

作用:
清空绘图设备(这个函数很重要)

三、绘图函数——在窗口上绘制各种图形

这块没有窗口函数那块那么规整,但主要概括起来就两个点:
分类
一些设置函数

1.分类
填充样式上可以分为三种:
无填充
有边框填充
无边框

以画圆为例:
无填充:circle();
有边框填充(fill前缀+):fillcircle();
无边框(solid前缀+):solidcircle();

如下图:

在这里插入图片描述

从形状上来分,常用的可以分为八种:
参数的话随用随查好了…
画圆:circle(int x,int y,int radius);[(x,y)是原点坐标,radius是半径]
画椭圆:ellipse();
画扇形:pie();
画多边形:polygon();
画矩形:rectangle(int left,int top,int right,int bottom);
[(left,top)是矩形左上角点的坐标,(right,bottom)是矩形右下角点的坐标]
画圆角矩形:roundrect();
画线:line();
画点:putpixel();

2.一些设置函数:
主要包括四个函数:
setfillcolor(颜色);
setlinecolor(颜色);
setlinestyle(线样式,线宽度,…);
setbkcolor(颜色);

(1) setfillcolor(颜色)

作用:
设置填充颜色
例如:
setfillcolor(RGB(10,20,20));
setfillcolor(BLUE);

(2) setlinecolor(颜色)

作用:
设置线条颜色
例如:
setlinecolor(RGB(10,20,20));
setlinecolor(BLUE);

(3) setlinestyle(线条样式,线条宽度…)
后面还有参数,最常用的就是这两个

作用:
设置线条样式
例如:
setlinestyle(PS_SOLID,5)
5代表5个像素点
线条样式:
PS_SOLID: (实线)
PS_DASH : (虚线)
PS_DOT: (点状线)
PS_DASHDOT : (虚线点)
PS_DASHDOTDOT :(虚线点点)
PS_NULL :(线形为不可见)
PS_USERSTYLE :(线性为用户自定义)

(4) setbkcolor(颜色)

作用:
设置背景颜色
例如:
setbkcolor(RGB(10,20,20));
setbkcolor(WHITE);
备注:
这块有一个需要注意的小点:写在第五部分“一些要注意的点中”

四、文字绘制函数——在窗口上绘制文字

这一部分主要涉及六个函数,可以大致分为三类:
第一类:主要输出函数(1)
outtextxy(int x,int y,TCHAR c);
第二类:设置函数——锦上添花(3)
settextcolor(颜色);
settextstyle(int nHeight,int nWidth,LRCTSTR lpszFace);
setbkmode();
第三类:获取高度和宽度函数——用于居中显示(需要有点脑子)
textheight(LPCTSTR str);
textwidth(LPCTSTR str);

1.outtextxy(int x,int y,TCHAR c);

作用:
在指定位置(x,y)处输出字符(串),字体颜色默认为白色。
注意点:
参数中的TCHAR c 代表的是一个字符,这也就是说这个函数的本意是在指定位置(x,y)处输出字符c。
但是,只输出一个字符,用法单调,极为不便。所以默认也可以输出字符串。所以管他什么原理,就输出字符串好了…
例如:
outtextxy(50,50,“鸿是江边鸟”);
输出结果:
在这里插入图片描述
备注:
在dev-c++上这样直接写是没有问题的,但如果是在vc上这样直接写可能会报错。
如何解决这样的报错,有三种方法。见第五部分“一些要注意的点”。

2.settextcolor(颜色);

作用:
设置当前文字颜色
例如:
settextcolor(RGB(10,20,20));
settextcolor(BLUE);

3.settextstyle(int nHeight,int nWidth,LRCTSTR lpszFace);

作用:
设置字体样式
参数:
nHeight:
指定文本高度
nWidth:
表示字符的平均宽度,如果为0,则表示自适应比例。(一般写为0就好了)
lpszFace:
表示字体名称,例如:楷体,华文行楷…

4.setbkmode()

作用:
设置字体的背景
注意点:
字体原本是有背景的,背景为白色
例如:
在这里插入图片描述
使用setbkmode(TRANSPARENT);将背景模式设为透明,避免这种情况。
使用后:
在这里插入图片描述

5.textheight(LPCTSTR str);

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

6.textwidth(LPCTSTR str);

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

备注:
LPCTSTR str代表字符串指针类型
textheight()和textwidth()主要用于文本的垂直和居中显示
至于怎们用这两个函数实现及这两个函数的用法,见第五部分“一些要注意的点”

五、一些要注意的点

1.关闭绘图窗口部分
getchar();
closegraph();
两个连着写,顺序不能颠倒,getchar()主要是解决闪退问题。

2.设置背景颜色部分:
setbkcolor(颜色);
cleardevice();
两个连着用,顺序不能颠倒,设置背景颜色后,要用cleardevice()函数清掉原颜色。

3.outtextxy()处理报错:
造成报错的原因:字符集问题。
解决方案:
1.在字符串(引号前面)前面加上大写的L
2.有TEXT()将字符串包起来
3.推荐使用:不需要添加任何东西。
进项目->属性->配置属性->常规->字符集->改为多字符字符集

4.文本的垂直和居中显示,用textheight()和textwidth()实现:

(1) 原理:
如图:
在这里插入图片描述

(2)示例:

#include<graphics.h>
#include<stdio.h> 
int main()
{
	initgraph(640,480);//建立一个640*480的窗口
	setbkcolor(WHITE);//将背景设置为白色
	cleardevice();//清理掉原来的黑色屏
	//画矩形
	setlinecolor(BLUE);//设置矩形边框的颜色为蓝色
	setlinestyle(PS_SOLID,1);//设置边框的样式为实线,宽度为1个像素点
	rectangle(150,50,350,100);//画一个矩形200*50
	//显示文本
 	settextcolor(RGB(200,180,130));//设置当前文字的颜色
	settextstyle(20,0,"华文行楷");//设置当前文字的样式,宽度自适应,字体为华文行楷
	setbkmode(TRANSPARENT);//将文字背景设为透明
	char arr[]="鸿是江边鸟,星是日落生";//给出所想要输出的文字内容
	int x=200/2-textwidth(arr)/2;//计算x0
	int y=50/2-textheight(arr)/2;//计算y0
	outtextxy(150+x,50+y,arr); //输出文字
	//关闭绘图窗口
	getchar();
	closegraph();
	return 0;
}

运行结果:
在这里插入图片描述

  • 12
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值