由 OpenClaw 开发的跨平台 .NET UI 框架
一个现代化的跨平台 UI 框架,使用 SkiaSharp 自绘渲染,支持 类 Razor 声明式语法 (EUI)。
- 基于 Google Skia 图形库,高质量矢量渲染
- 多渲染后端:ANGLE (D3D11)、OpenGL、CPU 软渲染
- 纯 Win32 窗口,无 WinForms/WPF 依赖
- 跨平台潜力 (Windows / macOS / Linux / Android / iOS)
<!-- HomePage.eui -->
@using Eclipse.Controls
<StackLayout Spacing="16" Padding="20">
<Label Text="你好 EclipseUI! 🎉" FontSize="32" />
<Button Text="点击我" OnClick="@OnButtonClick" />
</StackLayout>
@code {
private int _count = 0;
private void OnButtonClick(object? sender, EventArgs e)
{
_count++;
StateHasChanged();
}
}语法特性:
@using- 引入命名空间@code { }- C# 代码块@if/@foreach- 控制流@变量- 属性绑定OnClick="@方法"- 事件绑定
- 基于 HarfBuzz 的文本塑形
- Unicode TR#51 规范 Emoji 检测
- 支持 Emoji 序列 (ZWJ 组合、肤色修饰、国旗)
- 智能多语言字体回退
// 支持:你好 🌍 World 👨👩👧👦- Roslyn Source Generator
- 零反射、强类型
- 编译时语法检查
| 模块 | 功能 | 状态 |
|---|---|---|
| 核心 | 组件系统、BuildContext | ✅ 完成 |
| 语法 | EUI 解析、Source Generator | ✅ 完成 |
| 渲染 | SkiaSharp 多后端 | ✅ 完成 |
| 窗口 | Win32 原生窗口 | ✅ 完成 |
| 文本 | HarfBuzz 塑形、Emoji | ✅ 完成 |
| 控件 | Label, Button, StackLayout 等 | ✅ 基础完成 |
| 功能 | 说明 |
|---|---|
| 布局系统 | Measure/Arrange 机制 |
| 事件处理 | 鼠标、键盘输入 |
| TextInput | 光标、选择、IME 输入 |
| 功能 | 说明 |
|---|---|
| 动画系统 | 属性动画、过渡效果 |
| 样式系统 | CSS-like 样式 |
| 数据绑定 | MVVM 支持 |
| 更多控件 | ScrollView, ListView, Grid... |
| 跨平台 | macOS, Linux, Android, iOS |
| RTL 语言 | 阿拉伯语、希伯来语 |
┌─────────────────────────────────────────────────────────┐
│ .eui 文件 │
│ (类 Razor 声明式 UI) │
└─────────────────────────────────────────────────────────┘
↓ 编译时
┌─────────────────────────────────────────────────────────┐
│ EclipseSourceGenerator │
│ (Roslyn Source Generator) │
│ 生成强类型 Render() 方法 │
└─────────────────────────────────────────────────────────┘
↓ 运行时
┌─────────────────────────────────────────────────────────┐
│ Eclipse.Core │
│ IComponent, BuildContext, ComponentBase │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Eclipse.Skia │
│ SkiaSharp 渲染 + HarfBuzz 文本 │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ 平台适配层 │
│ Windows (Win32) │ macOS (规划) │ Linux (规划) │
└─────────────────────────────────────────────────────────┘
EclipseUI/
├── src/
│ ├── Eclipse.Core/ # 核心抽象层
│ ├── Eclipse.Controls/ # UI 控件库
│ ├── Eclipse.Skia/ # SkiaSharp 渲染层
│ │ └── Text/ # 文本系统 (HarfBuzz, Emoji)
│ ├── Eclipse.Generator/ # EUI Source Generator
│ └── Eclipse.Windows/ # Windows 平台支持
├── samples/
│ └── Demo/ # 示例应用
└── tests/
└── Eclipse.Tests/ # 单元测试
# 克隆项目
git clone https://github.com/CeSun/EclipseUI.git
# 构建
cd EclipseUI
dotnet build EclipseUI.sln
# 运行示例
dotnet run --project samples/Demo欢迎提交 Issue 和 Pull Request!
MIT License