Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

EGE (Easy Graphics Engine)

MSVC BuildMinGW Windows BuildMinGW Linux Cross-Compile BuildmacOS Native CoreGraphics BuildLinux Native Cairo BuildLicensePlatform

EGE (Easy Graphics Engine) 是一个提供类似 BGI (graphics.h) 接口的简易绘图库, 支持 Windows GDI、macOS Core Graphics/AppKit 和 Linux Cairo/Xlib 原生后端,专为 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>intmain()
{
initgraph(640, 480); // 初始化窗口circle(200, 200, 100); // 画圆:圆心 (200, 200),半径 100getch(); // 等待按键closegraph(); // 关闭图形窗口return0;
}

EGE 模拟了绝大多数 BGI 绘图函数,基本绘图函数的使用方式与 Turbo C / Borland C 基本一致。

更多示例请参阅 官方教程示例程序

支持的开发环境

EGE 支持以下 开发工具/编译器:

编译器/IDE版本支持备注
Visual Studio2017 ~ 2026推荐,支持 C++17 全部特性
强烈建议使用最新版本 (2026)
CLion支持推荐 可配合 XEGE 插件 迅速上手
VS Code支持推荐 可配合 EGE 插件 迅速上手
小熊猫 C++支持推荐 已内置 EGE, 下载即可用
Code::Blocks支持已测试版本: 25.03 (最新)
MinGW / MinGW-w64支持✅ 支持, SDK 发布时会基于最新版本进行测试
AppleClang / Xcode Command Line ToolsmacOS✅ Core Graphics + AppKit 原生 Mach-O 构建,不需要 Wine
GCC / ClangLinux✅ Cairo + Xlib 原生 ELF 构建;Wayland 会话通过 XWayland 运行
老版本 Visual Studio2010 ~ 2015⚠️ 支持,但不推荐(不支持 C++17)
Visual C++ 6.0aka 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 原生master 预览Cairo/Xlib CPU 后端;只直接依赖系统 libcairolibX11,Wayland 通过 XWayland

macOS/Linux 上的 Win32 句柄/资源接口(如 attachHWNDseticon(int)getHDC)只保留源码兼容签名,不等价于 Windows 资源模型;sys_edit 仍仅在 Windows 实现。graph_star 是 Win32 屏保 demo,不在 macOS 构建。 摄像头 demo 首次运行时会请求系统权限。

文档与资源

  • API 文档API 参考
  • 详细帮助man 目录下的 index.htm

IDE 插件

EGE 提供官方 IDE 插件,让项目配置更加简单:

IDE插件安装方式功能
CLionXEGE CreatorSettings → Plugins → Marketplace 搜索 "XEGE Creator"一键创建项目、CMake 自动配置、多平台支持
VS CodeEGE扩展面板搜索 "ege"一键创建项目、单文件编译运行、跨平台支持

CLion 插件使用

  1. 安装插件后,点击 File → New → Project...
  2. 在左侧项目类型列表中选择 EGE
  3. 配置项目名称和位置,选择是否使用源码模式
  4. 点击 Create 即可生成可运行的 EGE 项目

VS Code 插件使用

  1. 安装插件后,打开命令面板(Ctrl+Shift+P
  2. 输入 EGE: 查看可用命令:
    • EGE: 在当前工作区设置 ege 项目 - 使用预编译库创建项目
    • EGE: 在当前工作区设置带有 EGE 源代码的 ege 项目 - 使用源码创建项目
    • EGE: 构建并运行当前文件 - 快速编译运行单个 cpp 文件
  3. 下一个正式 SDK 将提供 lib/macOS/libgraphics.a,这是 AppleClang/Core Graphics 原生 universal 静态库; 不再提供 macOS 主机上的 MinGW/Wine 交叉编译产物。旧版插件若仍固定调用 Wine,请升级插件,或参考 编译指南

更多详情请访问插件主页:CLion 插件 | VS Code 插件

为什么选择 EGE

许多学习编程的人从 C 语言开始入门,但现有的教学环境存在一些问题:

  1. Turbo C 环境过时 — DOS 环境与现代操作系统兼容性差,可用颜色有限,编辑功能不便
  2. Windows 图形编程门槛高 — 在 Windows 编程中绘制简单图形需要处理窗口类、消息循环等复杂概念
  3. 图形学教学偏离重点 — 计算机图形学课程应聚焦于算法而非平台编程,但 Windows GDI 或 OpenGL 的门槛较高

EGE 的解决方案:无论您是 C 语言初学者、编程教师,还是计算机图形学讲师,EGE 都能让您专注于算法和逻辑,而非底层平台细节。

EGE 的优势

特点说明
轻量依赖图片编解码使用内置 stb_imagesdefl/sinfl;Linux 只链接系统 Cairo/X11,不引入 GUI 框架
直接像素访问getbuffer 返回 CPU 权威的顶向下、连续预乘 BGRA 像素;Core Graphics/Cairo 直接复用该 buffer,无 GPU readback
抗锯齿支持Windows 使用 GDI+;macOS Core Graphics 与 Linux Cairo 后端共享 ege_enable_aa 状态
预乘 Alpha 优化默认使用 PRGB32;Windows 可调用 AlphaBlend,macOS/Linux 在 CPU PixelSurface 上混合后原生呈现
多图像格式支持支持 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_CAMERA_CAPTURE=OFF
cmake --build build/native --target xege

11.0 是当前原生库的最低支持版本;可以显式设置更高值, 但发布制品和 CI 会固定在 11.0,避免继承构建机的最新 SDK 版本。

Linux 原生最小构建为:

sudo apt-get install build-essential cmake pkg-config libcairo2-dev libx11-dev
cmake -S . -B build/linux \
-DEGE_DEFAULT_BACKEND=CAIRO \
-DEGE_ENABLE_CAMERA_CAPTURE=OFF
cmake --build build/linux --target xege

实现边界、依赖与测试方法见 Linux native backend

社区与支持

渠道链接
官方网站https://xege.org
源码仓库https://github.com/x-ege/xege
社区论坛EGE Club
百度贴吧egeege娘
教程博客EGE 教程&介绍 (作者:依稀)
邮箱this@xege.org
QQ 群1060223135

历史信息

原作者信息与历史链接(点击展开)

EGE 图形库最初由 misakamm 创建。以下为原作者的相关链接(部分已失效):

资源链接状态
原仓库 1http://misakamm.github.com/xege已停止更新
原仓库 2http://misakamm.bitbucket.org/index.htm已停止更新
Google+ 社区https://plus.google.com/communities/103680008540979677071已关闭
原作者博客https://misakamm.com无法访问
原作者邮箱misakamm@gmail.com无法联系

目前项目由社区维护,主仓库位于 https://github.com/x-ege/xege

About

Easy Graphics Engine

Topics

Resources

Stars

181 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages