Easyx图形编程

431 阅读4分钟

基本说明

Easyx是针对C++的图形库,可以帮助C/C++初学者快速上手图形和游戏编程。

比如,可以基于Easyx图形库很快的用几何图形画一个房子,或者一辆移动的汽车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏。

1.准备工作

1.想要调用EasyX库里的函数,首先调用头文件: <graphics.h>或<easyx.h>

注:<easyx.h>是只包含最新的API(函数),<graphics.h>包含了<easyx.h>和已经不推荐使用了的函数

2.我们想要画图,首先要有一张画布,创建画布的语法也非常简单,我们需要调用EasyX库里的一个函数: initgraph(int width, int height);

3.使用完画布要将画布关闭,需要调用函数:closegraph( );

#include<graphics.h>
#include<conio.h>//需要调用_getch()函数使程序暂停

int main()
{
	const int width = 640;
	const int height = 480;
	initgraph(width, height);//初始化画布,640是画布宽度,480是画布高度

	_getch();//暂停,等待键盘按键

	closegraph();//关闭当前画布

	return 0;
}

2.绘制函数

作为一个图形库最基础的功能就是画图,EasyX包括了许多绘制函数,如下所示

image.png

总的来说都是围绕着坐标来展开的,以点成线,以最简单的画直线为例子,你只需要设置好给定的四个参数(即起点和终点的逻辑坐标),那么就会以起始坐标开始画一条直线到终点坐标

那么以此类推,画圆形就是设定原点坐标和半径,那么根据各种不同的图案组合,你就能得到期望的图形或者效果。

如下例程分别绘制了直线、圆形、矩形和多边形:

#include<graphics.h>
#include<conio.h>//需要调用_getch()函数使程序暂停

int main()
{
	const int width = 640;
	const int height = 480;
	initgraph(width, height);//初始化画布,640是画布宽度,480是画布高度
	setbkcolor(0xFFFFFF);//设置背景色为白色
	cleardevice(); //调用清屏cleardevice用背景色刷新背景
	setlinecolor(0xFFAAAA);

	line(width / 2 - 100, height / 2, width / 2, height / 2 - 100);//画线1
	line(width / 2 + 100, height / 2, width / 2, height / 2 + 100);//画线2
	line(width / 2, height / 2 - 100, width / 2 + 100, height / 2);//画线3
	line(width / 2, height / 2 + 100, width / 2 - 100, height / 2);//画线3

	circle(width / 2, height / 2, 100);//画布中心半径100的圆

	circle(width / 2, height / 2, 68);//画布中心半径68的圆

	rectangle(width / 2 - 100, height / 2 - 100, width / 2 + 100, height / 2 + 100);//圆的外接正方形

	POINT pts1[] = { {width / 2, height / 2 - 68}, {width / 2 - 59, height / 2 + 34}, {width / 2 + 59, height / 2 + 34} };	//圆的两个内接三角形
	POINT pts2[] = { {width / 2, height / 2 + 68}, {width / 2 - 59, height / 2 - 34}, {width / 2 + 59, height / 2 - 34} };	//坐标信息
	polygon(pts1, 3); //画一个无填充多边形
	polygon(pts2, 3); //参数1:坐标;参数2:多边形顶点数。

	_getch();//暂停,等待键盘按键

	closegraph();//关闭当前画布

	return 0;
}


3.文字绘制

1.绘制文字

outtextxy(int x,int y,LPCTSTR str); //在(x,y)输出文字str,如 outtextxy(10,10,"你好");

注意:使用字符串时出现错误

解决方法:

在字符串前加上L,即outtextxy(10,10,L"你好");

2.设置字体颜色

settextcolor(颜色); //设置字体颜色,如 settextcolor(BLUE);

3.设置字体样式

settextstyle(int Height,int Width, 样式); //设置字体类型,如settextstyle(30,0,"微软雅黑");

Height : 即字体的平均高度 Width : 即字体的平均宽度(为0表示自适应)

4.获取文本的宽度

textwidth(文本); //获取文字宽度,如:textwidth("张三");

5. 获取文本的高度

textheight(文本); //获取文本高度,如:textheight("李四");

4.图像处理函数

1.图像类型变量 IMAGE

在使用图像之前,需要先定义一个变量(对象),然后把图片加载进变量能使用。

定义一个图像变量,如 IMAGE img;

2.加载图像

loadimage(&img, 文件路径,宽, 高,是否调整 IMAGE大小来适应图片); loadimage(IMAGE *pDstImg,文件路径, 宽,高, bool bResize = false);

相对路径: ./ 表示当前文件夹下 ../ 表示上一级文件夹 如:./123.jpg

绝对路径:C:\Users\ASUS\Desktop\eaxyX项目\eaxyX\eaxyX\123.jpg

如,loadimage(&img,"./123.jpg");

3.在设备上绘制图片

putimage(X,Y,&img) putimage(X,Y,&img,三元光栅操作码) //把(x,y)作为左上角顶点放置图片,最后一个参数一般用不到

如,putimage(0,0,&img); //放在左上角