EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库,
支持 Windows GDI 和 macOS Core Graphics/AppKit 原生后端,专为 C/C++ 初学者设计。
原生 macOS 支持已合入
master,将在下一个正式 SDK 发布; 已发布的 v25.11 不包含这个后端。当前可从源码构建或使用 CI 预览制品。
- 简单易用 — 接口设计直观,与 TC 的
graphics.h高度兼容,初学者也能快速上手 - 高效渲染 — 窗口锁定绘图模式下,640×480 的半透明混合可达 60 FPS
- 功能丰富 — 支持拉伸贴图、图片旋转、透明/半透明贴图、图像滤镜、多种图片格式(BMP/JPG/PNG/GIF 等)
- 灵活绘图 — 绘图可直接针对图像进行,不限于屏幕
- 免费开源 — 采用 LGPL 2.1 许可证,欢迎参与开发
#include <graphics.h>
int main()
{
initgraph(640, 480); // 初始化窗口
circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100
getch(); // 等待按键
closegraph(); // 关闭图形窗口
return 0;
}EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。
EGE 支持以下 开发工具/编译器:
| 编译器/IDE | 版本支持 | 备注 |
|---|---|---|
| Visual Studio | 2017 ~ 2026 | ✅ 推荐,支持 C++17 全部特性 强烈建议使用最新版本 (2026) |
| CLion | 支持 | ✅ 推荐 可配合 XEGE 插件 迅速上手 |
| VS Code | 支持 | ✅ 推荐 可配合 EGE 插件 迅速上手 |
| 小熊猫 C++ | 支持 | ✅ 推荐 已内置 EGE, 下载即可用 |
| Code::Blocks | 支持 | 已测试版本: 25.03 (最新) |
| MinGW / MinGW-w64 | 支持 | ✅ 支持, SDK 发布时会基于最新版本进行测试 |
| AppleClang / Xcode Command Line Tools | macOS | ✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine |
| 老版本 Visual Studio | 2010 ~ 2015 | |
| Visual C++ 6.0 | aka vc6.0 | |
| Dev-C++ | 支持 | 已测试版本: 5.11 (最新) |
| Eclipse for C/C++、 C-Free 等 | 支持 |
| 目标 | 当前状态 | 说明 |
|---|---|---|
| Windows | 稳定 | GDI/GDI+ 后端,保留 HWND/HDC、资源和 sys_edit 等 Win32 能力 |
| macOS 11.0+ | master 预览 |
Core Graphics/AppKit 原生后端,支持 arm64/x86_64;MUSIC 使用 AVFAudio |
| Linux 原生 | 未实现 | Cairo 后端尚未完成;Linux CI 当前是 MinGW Windows 交叉编译 |
macOS 上的 Win32 句柄/资源接口(如 attachHWND、seticon(int)、
getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit
仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。
摄像头 demo 首次运行时会请求系统权限。
- API 文档:API 参考
- 详细帮助:
man目录下的index.htm
EGE 提供官方 IDE 插件,让项目配置更加简单:
| IDE | 插件 | 安装方式 | 功能 |
|---|---|---|---|
| CLion | XEGE Creator | Settings → Plugins → Marketplace 搜索 "XEGE Creator" |
一键创建项目、CMake 自动配置、多平台支持 |
| VS Code | EGE | 扩展面板搜索 "ege" | 一键创建项目、单文件编译运行、跨平台支持 |
- 安装插件后,点击
File → New → Project... - 在左侧项目类型列表中选择 EGE
- 配置项目名称和位置,选择是否使用源码模式
- 点击
Create即可生成可运行的 EGE 项目
- 安装插件后,打开命令面板(
Ctrl+Shift+P) - 输入
EGE:查看可用命令:EGE: 在当前工作区设置 ege 项目- 使用预编译库创建项目EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目- 使用源码创建项目EGE: 构建并运行当前文件- 快速编译运行单个 cpp 文件
- 下一个正式 SDK 将提供
lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南
更多详情请访问插件主页:CLion 插件 | VS Code 插件
许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:
- Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
- Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
- 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高
EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。
| 特点 | 说明 |
|---|---|
| 零依赖轻量级 | 使用 stb_image 和 sdefl/sinfl 替代 libpng/zlib,无外部依赖,单库即可使用 |
| 直接像素访问 | getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;macOS Core Graphics 直接复用该 buffer,无 GPU readback |
| 抗锯齿支持 | Windows 使用 GDI+;macOS 的 Core Graphics 后端与 ege_enable_aa 共享抗锯齿状态 |
| 预乘 Alpha 优化 | 默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS 在 CPU PixelSurface 上混合并由 Core Graphics 呈现 |
| 多图像格式支持 | 支持 PNG, JPEG, BMP, GIF, TGA, PSD, HDR 等常见图像格式 |
| 灵活的图像操作 | 支持图像旋转、缩放、透明贴图、Alpha 滤镜等高级变换 |
| 坐标变换系统 | 提供 ege_transform_* 系列函数,支持平移、旋转、缩放等矩阵变换 |
| 完善的输入处理 | 支持键盘、鼠标(含双击、扩展键)、输入法等多种输入方式 |
| 相机捕获支持 | 基于 ccap 提供摄像头采集功能 (C++17) |
| 跨编译器兼容 | 从 VS2017 到 VS2026,MinGW 全系列均可编译,兼容性极强 |
EGE 使用 CMake 作为构建系统。
详细编译步骤请参阅 编译指南。
macOS 原生构建的最小配置为:
cmake -S . -B build/native \
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
-DEGE_DEFAULT_BACKEND=COREGRAPHICS \
-DEGE_ENABLE_OPENGL=OFF \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege11.0 是当前原生库的最低支持版本;可以显式设置更高值,
但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。
Linux 原生 Cairo 后端尚未实现,当前会在 CMake 配置阶段 fail-fast。OpenGL 实验分支只作为构建分层和后端接口参考,不默认启用。
| 渠道 | 链接 |
|---|---|
| 官方网站 | https://xege.org |
| 源码仓库 | https://github.com/x-ege/xege |
| 社区论坛 | EGE Club |
| 百度贴吧 | ege、ege娘 |
| 教程博客 | EGE 教程&介绍 (作者:依稀) |
| 邮箱 | this@xege.org |
| QQ 群 | 1060223135 |
原作者信息与历史链接(点击展开)
EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):
| 资源 | 链接 | 状态 |
|---|---|---|
| 原仓库 1 | http://misakamm.github.com/xege | 已停止更新 |
| 原仓库 2 | http://misakamm.bitbucket.org/index.htm | 已停止更新 |
| Google+ 社区 | https://plus.google.com/communities/103680008540979677071 | 已关闭 |
| 原作者博客 | https://misakamm.com | 无法访问 |
| 原作者邮箱 | misakamm@gmail.com | 无法联系 |
目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege。