系列文章
①:安装及基本概念 ②:EasyX函数-设备相关
前言
作者也是个小白,本【教程】充其量算个学习笔记,若有写的不正确的地方还请指教。
一、EasyX是啥?
??EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。
??比如,可以基于 EasyX 图形库很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。
??许多人学编程都是从 C 语言入门的,而现状是:
-
有些学校以 Turbo C 为环境学习 C 语言,只是 Turbo C 实在太老了,复制粘贴都很不方便。 -
有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 里面只能做一些文字性的练习题,想画条直线或一个圆都很难,例如需要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。 -
还有计算机图形学,这门课程的重点是绘图算法,而不是 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);
circle(200, 200, 100);
_getch();
closegraph();
return 0;
}
运行试试,如果没报错,就好了。
二、基本概念
基本概念 | 描述 |
---|
颜色 | 描述颜色的各种表示方法。 | 坐标 | 描述坐标系。 | 设备 | 描述“设备”概念。 |
EasyX 使用 24bit 真彩色,不支持调色板模式。 描述颜色的几种方法:
- 使用宏表示:
常量 | 值 | 颜色 |
---|
BLACK | 0 | 黑 | BLUE | 0xAA0000 | 蓝 | GREEN | 0x00AA00 | 绿 | CYAN | 0xAAAA00 | 青 | RED | 0x0000AA | 红 | MAGENTA | 0xAA00AA | 紫 | BROWN | 0x0055AA | 棕 | LIGHTGRAY | 0xAAAAAA | 浅灰 | DARKGRAY | 0x555555 | 深灰 | LIGHTBLUE | 0xFF5555 | 亮蓝 | LIGHTGREEN | 0x55FF55 | 亮绿 | LIGHTCYAN | 0xFFFF55 | 亮青 | LIGHTRED | 0x5555FF | 亮红 | LIGHTMAGENTA | 0xFF55FF | 亮紫 | YELLOW | 0x55FFFF | 黄 | WHITE | 0xFFFFFF | 白 |
- 用 16 进制数字表示颜色:
0xBBGGRR :RR-红,GG-绿,BB-蓝 注意是b-g-r不是r-g-b (其实宏定义也一样) - 使用
RGB() 合成:
COLORREF RGB(
BYTE byRed,
BYTE byGreen,
BYTE byBlue
);
- 用
HSLtoRGB() 、HSVtoRGB() 转换其他色彩模型到 RGB 颜色 HSL:
COLORREF HSLtoRGB(
float H,
float S,
float L
);
HSL颜色实例:
#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);
for(int r = 400; r > 344; r--)
{
H += 5;
setlinecolor( HSLtoRGB(H, S, L) );
circle(500, 480, r);
}
_getch();
closegraph();
return 0;
}
HSV:
COLORREF HSVtoRGB(
float H,
float S,
float V
);
easyx中坐标分两类:逻辑坐标__与__物理坐标。
-
物理坐标: ?物理坐标是描述设备的坐标体系。 ?坐标原点在设备的 左上角 ,X 轴 向右为正,Y 轴 向下为正,度量单位是 像素。 ?坐标原点、坐标轴方向、缩放比例都不能改变。 -
逻辑坐标: ?逻辑坐标是在程序中用于绘图的坐标体系。 ?坐标默认的原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,度量单位是点。 ?默认情况下,逻辑坐标与物理坐标是一一对应的,一个逻辑点等于一个物理像素。
“设备”,是指绘图表面。 在 EasyX 中,设备分两种,一种是默认的绘图窗口,另一种是 IMAGE 对象。通过 SetWorkingImage 函数可以设置当前用于绘图的设备。 设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。
通俗说,设备就相当于画布,可以使创建的窗口,也可以是图片。
结语
精力、时间有限,先写到这,下期见!
@HaohaoCppDebuger|寻兰? 2021/10/23?
-----THE END----- THANK YOU !
>>>下一篇—②:EasyX函数-设备相关
|