# 星垣 (StellarX) GUI Framework ![Version](https://img.shields.io/badge/Version-1.0.0-brightgreen.svg) ![Download](https://img.shields.io/badge/Download-1.0.0_Release-blue.svg) ![C++](https://img.shields.io/badge/C++-17+-00599C?logo=cplusplus&logoColor=white) ![Windows](https://img.shields.io/badge/Platform-Windows-0078D6?logo=windows) ![EasyX](https://img.shields.io/badge/Based_on-EasyX-00A0EA) ![License](https://img.shields.io/badge/License-MIT-blue.svg) ![Architecture](https://img.shields.io/badge/Architecture-Modular%20OOP-brightgreen) ![CMake](https://img.shields.io/badge/Build-CMake-064F8C?logo=cmake) > **「繁星为界,轻若尘埃」** —— 一个为Windows平台打造的、极致轻量级、高度模块化的C++原生GUI框架。 `星垣 (StellarX)` 诞生于对现代GUI框架"过度臃肿"的反抗。它拒绝动辄数百MB的依赖、漫长的编译时间和复杂的学习曲线,选择回归本质:用最精简的代码、最清晰的架构和最高的效率,解决桌面应用开发的核心需求。 它是一个**纯粹的教学级、工具级框架**,旨在让开发者深入理解GUI原理,并快速构建轻量级Windows工具。 --- ## 📦 项目结构与设计哲学 星垣框架采用经典的**面向对象**和**模块化**设计,项目结构清晰规范: ``` StellarX/ ├── include/ # 头文件目录 │ └── StellarX/ # 框架头文件 │ ├── StellarX.h # 主包含头文件 - 一键引入整个框架 │ ├── CoreTypes.h # ★ 核心 ★ - 所有枚举、结构体的唯一定义源 │ ├── Control.h # 抽象基类 - 定义所有控件的统一接口 │ ├── Button.h # 按钮控件 │ ├── Window.h # 窗口管理 │ ├── Label.h # 标签控件 │ ├── TextBox.h # 文本框控件 │ ├── Canvas.h # 画布容器 │ └── Table.h # 表格控件 ├── src/ # 源文件目录 │ ├── Control.cpp │ ├── Button.cpp │ ├── Window.cpp │ ├── Label.cpp │ ├── TextBox.cpp │ ├── Canvas.cpp │ └── Table.cpp ├── examples/ # 示例代码目录 │ └── demo.cpp # 基础演示 ├── docs/ # 文档目录 │ └── CODE_OF_CONDUCT.md # 行为准则 ├── CMakeLists.txt # CMake 构建配置 ├── CONTRIBUTING.md # 贡献指南 ├── CHANGELOG.md # 更新日志 ├── Doxyfile # Doxygen 配置 ├── LICENSE # MIT 许可证 └── README.md # 项目说明 ``` **设计理念:** 1. **单一职责原则 (SRP)**: 每个类/文件只负责一件事。 2. **依赖倒置原则 (DIP)**: 高层模块(如`Window`)不依赖低层模块(如`Button`),二者都依赖其抽象(`Control`)。 3. **开闭原则 (OCP)**: 通过继承`Control`基类,可以轻松扩展新的控件,而无需修改现有代码。 4. **一致性**: 所有控件共享统一的`draw()`和`handleEvent()`接口。 ## 🚀 核心特性 - **极致的轻量级**: 核心库编译后仅 ~1.2MB,无任何外部依赖。生成的应用程序小巧玲珑。 - **清晰的模块化架构**: 使用`CoreTypes.h`统一管理所有类型,消除重复定义,极大提升可维护性。 - **原生C++性能**: 直接基于EasyX和Win32 API,提供接近原生的执行效率,内存占用极低(通常<10MB)。 - **丰富的控件库**: 提供按钮、标签、文本框、表格、画布等常用控件,满足基本桌面应用需求。 - **高度可定制化**: 从控件颜色、形状(矩形、圆角、圆形、椭圆)到填充模式、字体样式,均有详尽枚举支持,可轻松定制。 - **简洁直观的API**: 采用经典的面向对象设计,代码即文档,学习成本极低。 - **标准项目结构**: 采用标准的include/src分离结构,支持CMake构建,易于集成和使用。 ## ⚡ 快速开始(5分钟上手) > **🎯 最新版本下载** > 从 [GitHub Releases](https://github.com/Ysm-04/StellarX/releases/latest) 下载预编译的库文件和头文件,即可快速集成到你的项目中。 ### 环境要求 - **操作系统**: Windows 10 或更高版本 - **编译器**: 支持C++17的编译器 (如: **Visual Studio 2019+**) - **图形库**: [EasyX](https://easyx.cn/) (2022版本或更高,安装时请选择与您编译器匹配的版本) - **构建工具**: CMake 3.12+ (可选,推荐使用) ### 安装 EasyX 1. 访问 [EasyX 官网](https://easyx.cn/) 下载最新版本 2. 运行安装程序,选择与您的 Visual Studio 版本匹配的版本 3. 安装完成后,无需额外配置,星垣框架会自动链接 EasyX ### 方法一:使用CMake构建(推荐) 1. **克隆项目**: ```bash git clone https://github.com/Ysm-04/StellarX.git cd StellarX ``` 2. **生成构建系统**: ```bash mkdir build cd build cmake .. ``` 3. **编译项目**: ```bash cmake --build . ``` 4. **运行示例**: ```bash ./examples/Demo ``` ### 方法二:手动集成到现有项目 1. **将include和src目录复制**到您的项目中 2. **配置包含路径**,确保编译器可以找到`include/StellarX/`目录 3. **将所有.cpp文件**添加到您的项目中编译 ### 创建你的第一个星垣应用 ```cpp // 只需包含这一个头文件即可使用所有功能 #include "StellarX.h" // 程序入口点(请使用WinMain以获得更好的兼容性) int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd) { // 1. 创建一个640x480的窗口,背景为白色,标题为"我的应用" Window mainWindow(640, 480, 0, RGB(255, 255, 255), "我的第一个星垣应用"); // 2. 创建一个按钮 (使用智能指针管理) auto myButton = std::make_unique