本文最后更新于358 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
配置
说明文档
下载地址
EasyX Graphics Library for C++
示例程序
编写以下程序检验EasyX是否正常安装:
```cpp
#include <graphics.h> // 引用图形库头文件
#include <conio.h>
int main()
{
initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素
circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
_getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
return 0;
}
若EasyX正常安装,程序运行结果应如下:

基本概念
颜色
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 | 白 |
表示颜色的方法
1. 用预定义常量表示颜色
2. 用 16 进制数字表示颜色
在 EasyX 图形库中,颜色通过 32 位十六进制整数 表示,其格式遵循 BGR 颜色模型(与常见的 RGB 顺序相反),具体结构如下:
0x00bbggrr
bb:蓝色分量(2 位十六进制数,范围00–FF)gg:绿色分量(2 位十六进制数,范围00–FF)rr:红色分量(2 位十六进制数,范围00–FF)- 高位
00为保留字节(可省略,如0xFF5555实际表示0x00FF5555)。
示例
- BLUE(蓝色)
- 值:
0xAA0000→ 分解为bb=AA,gg=00,rr=00 - 蓝色分量为
AA,其他为0,因此显示纯蓝。
- 值:
- RED(红色)
- 值:
0x0000AA→ 分解为bb=00,gg=00,rr=AA - 红色分量为
AA,其他为0,因此显示纯红。
- 值:
- YELLOW(黄色)
- 值:
0x55FFFF→ 分解为bb=55,gg=FF,rr=FF - 绿色和 红色分量为
FF(最大值),蓝色为55(较低值),混合后接近黄色(少量蓝色会略微降低纯度)。
- 值:
与标准RGB颜色对比
EasyX 的 BGR 顺序与常见的 RGB 顺序相反,因此颜色值需调整字节顺序:
- 标准 RGB:
0xRRGGBB - EasyX BGR:
0xBBGGRR
例如: - 标准绿色的 RGB 为
0x00FF00,在 EasyX 中需表示为0x00FF00(绿色分量在中间字节)。 - 标准黄色的 RGB 为
0xFFFF00,在 EasyX 中需表示为0x00FFFF(高绿色和红色,低蓝色)。
注意事项
- 颜色范围:每个分量为
0x00(最暗)到0xFF(最亮)。 - 高位省略:书写时可省略保留字节
0x00,直接使用0xBBGGRR。 - 混合颜色:通过组合不同分量的值,可生成任意颜色(如
0xAABBCC表示蓝AA、绿BB、红CC)。
如果需要将标准 RGB 颜色转换为 EasyX 格式,需交换 红色 和 蓝色 分量的位置。
坐标
在 EasyX 中,坐标分两种:物理坐标和逻辑坐标。
物理坐标
物理坐标是描述设备的坐标体系。
坐标原点在设备的左上角,X 轴向右为正,Y 轴向下为正,度量单位是像素。
坐标原点、坐标轴方向、缩放比例都不能改变。
逻辑坐标
逻辑坐标是在程序中用于绘图的坐标体系。
坐标默认的原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,、度量单位是点。
默认情况下,逻辑坐标与物理坐标是一一对应的,一个逻辑点等于一个物理像素。
在本手册中,凡是没有注明的坐标,均指逻辑坐标。
设备
EasyX中设备分两种,一种是默认的绘图窗口,另一种是IMAGE对象。
通过SetWorkinglmage()函数可以设置当前用于绘图的设备,设置当前用于绘图的设备后,所有的绘图函数都会绘制在该设备上。
你好