# AtomUI Icon 系统文档 ## 概述 AtomUI Icon 系统是一套**构建时代码生成 + 运行时高性能渲染**的图标解决方案。它将 SVG 图标在构建时转换为原生 Avalonia 绘图指令(`DrawingInstruction`),实现零运行时解析开销、类型安全的图标引用、以及自动 Tree-shaking。 ### 核心设计理念 1. **构建时生成**:SVG → C# 代码,编译后成为原生绘图指令,无运行时 SVG 解析 2. **性能优先**:`DrawingInstruction` 静态共享 + `Geometry` 惰性缓存 + `IconProvider` 三级工厂缓存 3. **可扩展性**:通过继承生成器框架,可轻松创建任意 Icon 包(Material Icons、Fluent Icons、自定义业务图标等) 4. **类型安全**:每个图标是独立的 C# 类,枚举引用提供编译时检查和 IDE 智能提示 5. **主题集成**:图标颜色通过 Design Token 系统控制,自动适配亮/暗主题 --- ## 文档目录 | 文档 | 说明 | 目标读者 | |---|---|---| | [Architecture.md](./Architecture.md) | **底层原理设计解析** — 架构分层、关键类型与接口、设计决策分析 | 框架开发者、需要深入理解实现原理的工程师 | | [AntDesignIconPackage.md](./AntDesignIconPackage.md) | **AntDesign Icon 包实例解析** — 完整的生成流程、生成代码示例、依赖关系 | 框架开发者、需要维护或修改 Ant Design 图标包的工程师 | | [IconPackageCreationGuide.md](./IconPackageCreationGuide.md) | **Icon 包制作指导手册** — 创建自定义 Icon 包的完整步骤、注意事项与最佳实践 | 需要创建自定义图标包的工程师 | | [UsageGuide.md](./UsageGuide.md) | **Icon 使用规范指南** — C# 和 AXAML 中的使用方式、属性速查、编码规范 | 所有使用 AtomUI 的开发者 | --- ## 快速参考 ### 在 AXAML 中使用 Ant Design 图标 ```xml xmlns:antdicons="https://atomui.net/icons/antdesign" ``` ### 在 C# 中使用 Ant Design 图标 ```csharp using AtomUI.Icons.AntDesign; // 直接实例化 var icon = new CheckCircleFilled(); // 带动画 var loading = new LoadingOutlined { LoadingAnimation = IconAnimation.Spin }; // 设置到控件属性 SetCurrentValue(IconProperty, new CloseCircleFilled()); ``` ### 项目依赖关系 ``` 构建时 运行时 ┌──────────────────────────────┐ ┌──────────────────────────────────┐ │ Icons.AntDesign.Generator │ │ Icons.AntDesign │ │ └── Icons.Shared │ │ └── AtomUI.Core │ │ └── AtomUI.Core │ │ (Icon, DrawingInstruction, │ │ (枚举定义) │ │ IconProvider) │ └──────────────────────────────┘ └──────────────────────────────────┘ ↓ dotnet run 生成代码 ↑ 引用生成的代码 └────────────────────────────────────────┘ ```