C++游戏梦 | EasyX详解 | ①:安装及基本概念

系列文章

①:安装及基本概念
②:EasyX函数-设备相关
③:EasyX函数-颜色模型
④:EasyX函数-图形样式
⑤:EasyX函数-绘图相关〔1〕
⑥:EasyX函数-绘图相关〔2〕


前言

作者也是个小白,本【教程】充其量算个学习笔记,若有写的不正确的地方还请指教。

一、EasyX是啥?

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

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

  许多人学编程都是从 C 语言入门的,而现状是:

  1. 有些学校以 Turbo C 为环境学习 C 语言,只是 Turbo C 实在太老了,复制粘贴都很不方便。

  2. 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 里面只能做一些文字性的练习题,想画条直线或一个圆都很难,例如需要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。

  3. 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。

  所以,我们想给大家一个更好的学习平台,就是 VC 方便的开发平台和 TC 简单的绘图功能,于是就有了这个 EasyX 库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的。

EasyX 20210730
——EasyX在线文档

下载

戳这 → \rightarrow EasyX官网,点击下载EasyX在这里插入图片描述
在这里插入图片描述
安装对应版本,并最好下载第一个文档(说明)。
安装完成后,打开一个空项目,复制:

#include <graphics.h>		// 引用图形库头文件
#include <conio.h>
int main()
{
	initgraph(640, 480);	// 创建绘图窗口,大小为 640x480 像素
	circle(200, 200, 100);	// 画圆,圆心(200, 200),半径 100
	_getch();				// 按任意键继续
	closegraph();			// 关闭绘图窗口
	return 0;
}

运行试试,如果没报错,就好了。

二、基本概念

基本概念描述
颜色描述颜色的各种表示方法。
坐标描述坐标系。
设备描述“设备”概念。
  • 颜色

EasyX 使用 24bit 真彩色,不支持调色板模式。
描述颜色的几种方法:

  1. 使用宏表示:
常量颜色
BLACK0
BLUE0xAA0000
GREEN0x00AA00绿
CYAN0xAAAA00
RED0x0000AA
MAGENTA0xAA00AA
BROWN0x0055AA
LIGHTGRAY0xAAAAAA浅灰
DARKGRAY0x555555深灰
LIGHTBLUE0xFF5555亮蓝
LIGHTGREEN0x55FF55亮绿
LIGHTCYAN0xFFFF55亮青
LIGHTRED0x5555FF亮红
LIGHTMAGENTA0xFF55FF亮紫
YELLOW0x55FFFF
WHITE0xFFFFFF
  1. 用 16 进制数字表示颜色:
    0xBBGGRR:RR-红,GG-绿,BB-蓝
    注意是b-g-r不是r-g-b
    (其实宏定义也一样)
  2. 使用RGB()合成:
COLORREF RGB(//返回合成颜色
	BYTE byRed,		// 颜色的红色部分,[0,255]
	BYTE byGreen,	// 颜色的绿色部分,[0,255]
	BYTE byBlue		// 颜色的蓝色部分,[0,255]
);
  1. HSLtoRGB()HSVtoRGB() 转换其他色彩模型到 RGB 颜色
    HSL:
COLORREF HSLtoRGB(//返回RGB颜色
	float H,//原 HSL 颜色模型的 Hue(色相) 分量,[0,360]。
	float S,//原 HSL 颜色模型的 Saturation(饱和度) 分量,[0,1]。
	float L //原 HSL 颜色模型的 Lightness(亮度) 分量,[0,1]。
);

HSL颜色1实例:

//绘制彩虹
#include <graphics.h>
#include <conio.h>

int main()
{
	// 创建绘图窗口
	initgraph(640, 480);

	// 画渐变的天空(通过亮度逐渐增加)
	float H = 190;		// 色相
	float S = 1;		// 饱和度
	float L = 0.7f;		// 亮度
	for(int y = 0; y < 480; y++)
	{
		L += 0.0005f;
		setlinecolor( HSLtoRGB(H, S, L) );
		line(0, y, 639, y);
	}

	// 画彩虹(通过色相逐渐增加)
	H = 0;
	S = 1;
	L = 0.5f;
	setlinestyle(PS_SOLID, 2);		// 设置线宽为 2
	for(int r = 400; r > 344; r--)
	{
		H += 5;
		setlinecolor( HSLtoRGB(H, S, L) );
		circle(500, 480, r);
	}

	// 按任意键退出
	_getch();
	closegraph();
	return 0;
}

HSV2:

COLORREF HSVtoRGB(
	float H,//原 HSV 颜色模型的 Hue(色相) 分量,0 <= H < 360。
	float S,//原 HSV 颜色模型的 Saturation(饱和度) 分量,0 <= S <= 1。
	float V //原 HSV 颜色模型的 Value(明度) 分量,0 <= V <= 1。
);
  • 坐标

easyx中坐标分两类:逻辑坐标__与__物理坐标

  1. 物理坐标:

     物理坐标是描述设备的坐标体系。
     坐标原点在设备的 左上角 ,X 轴 向右为正,Y 轴 向下为正,度量单位是 像素
    坐标原点、坐标轴方向、缩放比例都不能改变。
  2. 逻辑坐标:

     逻辑坐标是在程序中用于绘图的坐标体系。
     坐标默认的原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,度量单位是点
    默认情况下,逻辑坐标与物理坐标是一一对应的,一个逻辑点等于一个物理像素。
  • 设备

“设备”,是指绘图表面。

在 EasyX 中,设备分两种,一种是默认的绘图窗口,另一种是 IMAGE 对象。通过 SetWorkingImage 函数可以设置当前用于绘图的设备。

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

通俗说,设备就相当于画布,可以使创建的窗口,也可以是图片。


结语

精力、时间有限,先写到这,下期见!


@HaohaoCppDebuger|寻兰 
2021/10/23 

-----THE END-----
THANK YOU !

>>>下一篇—②:EasyX函数-设备相关













  1. HSL 又称 HLS。
    HSL 的颜色模型如图所示:在这里插入图片描述H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。
    S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,具有最纯的色光。
    L 是英文 Lightness 的首字母,表示亮度,等于 0 时为黑色,等于 0.5 时是色彩最鲜明的状态,等于 1 时为白色。 ↩︎

  2. HSV 又称 HSB。
    HSV 的颜色模型如图所示:在这里插入图片描述
    H 是英文 Hue 的首字母,表示色相,即组成可见光谱的单色。红色在 0 度,绿色在 120 度,蓝色在 240 度,以此方向过渡。
    S 是英文 Saturation 的首字母,表示饱和度,等于 0 时为灰色。在最大饱和度 1 时,每一色相具有最纯的色光。
    V 是英文 Value 的首字母,表示明度,等于 0 时为黑色,在最大明度 1 时,是色彩最鲜明的状态。
    其实hsv和hsl区别不大,【彩虹】例可参考。 ↩︎

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值