IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++游戏梦 | EasyX详解 | ①:安装及基本概念 -> 正文阅读

[C++知识库]C++游戏梦 | EasyX详解 | ①:安装及基本概念

系列文章

①:安装及基本概念
②:EasyX函数-设备相关


前言

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

一、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区别不大,【彩虹】例可参考。 ??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:45:41  更:2021-10-24 14:46:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:40:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码