# webgui **Repository Path**: lightsever/webgui ## Basic Information - **Project Name**: webgui - **Description**: 一种操作系统无关的ui开发方式,逻辑可以以控制台的形式运行在 命令行中,而他的ui以web形式呈现。 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebGui — dotnet 远程 UI 库 为 dotnet CLI 工具提供远程 Web 图形界面的 C# 库。通过内置 HTTP 服务器 + WebSocket 将绘制指令实时发送到浏览器渲染,无需学习前端技术即可为命令行工具构建可视化界面。 ## 核心思路 ``` ┌──────────────────────┐ WebSocket ┌────────────────────┐ │ C# 应用端 │ ◄──── draw commands ────► │ 浏览器端 │ │ │ │ │ │ GLESContext API │ Clear, DrawRect, │ WebGL2 Renderer │ │ (用户调用的绘制接口) │ FillRect, DrawText, │ (webcs 编写) │ │ │ DrawImage, SetClip... │ │ │ CommandBuffer │ │ Input Forwarder │ │ (序列化为二进制) │ ◄── input events ────── │ (mouse/key/touch) │ └──────────────────────┘ └────────────────────┘ ``` - **C# 库**:包含 HTTP Server + WebSocket 服务,嵌入 HTML/JS 模板 - **JS 客户端**:用 [webcs](https://gitee.com/lightsever/webcs)(C# → JS 编译器)开发,引用 ttengine 的 Batcher 模式进行 WebGL2 高效渲染 - **Command Buffer**:C# 端 GLES 风格的绘制 API,将 draw 指令序列化为二进制,通过 WebSocket 发送到浏览器执行 ## 架构 ``` src/ ├── WebGui.Core/ # 核心库:CommandBuffer、GLESContext、HttpServer ├── WebGui.Client/ # webcs 项目:浏览器端 WebGL2 渲染器 samples/ ├── HelloWebGui/ # 示例:最小化 dotnet 工具 webcs/ # webcs C#→JS 编译器 (submodule) docs/ ├── architecture.md # 架构设计文档 ``` ## 快速开始 ```bash # 构建整个项目 dotnet build # 运行示例 dotnet run --project samples/HelloWebGui # 浏览器打开 http://localhost:8080 ``` ```csharp // 使用示例 var server = new WebGuiServer(8080); server.OnFrame += (ctx, dt) => { ctx.Clear(Color.Black); ctx.FillRect(10, 10, 100, 50, Color.Red); ctx.DrawText("Hello WebGui!", 20, 30, Color.White, 16); }; server.Run(); ``` ## 依赖 - .NET 10.0+ - [webcs](https://gitee.com/lightsever/webcs) — C# → JavaScript 编译器