1# 图形子系统<a name="ZH-CN_TOPIC_0000001115588688"></a> 2 3图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS应用框架满足硬件资源较小的物联网设备或者构建基于标准OS的应用框架满足富设备的OpenHarmony系统应用开发。 4 5## 1.1 轻量系统<a name="section1346303311377"></a> 6 7### 简介<a name="section1165992615384"></a> 8 9图形子系统主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS的应用框架,满足硬件资源较小的物联网设备的OpenHarmony系统应用开发。 10 11**图 1** 图形子系统架构图<a name="fig16488143010409"></a> 12![](figures/图形子系统架构图.png "图形子系统架构图") 13 14各模块介绍: 15 16- View:应用组件,包括UIView、UIViewGroup、UIButton、UILabel、UILabelButton、UIList、UISlider等。 17- Animator:动画模块,开发者可以自定义动画。 18- Layout:布局控件,包括FlexLayout、GridLayout、ListLayout等。 19- Transform:图形变换模块,包括旋转、平移、缩放等。 20- Event:事件模块,包括click、press、drag、long press等基础事件。 21- Rendering engine:渲染绘制模块。 22- 2D graphics library:2D绘制模块,包括直线、矩形、圆、弧、图片、文字等绘制。包括软件绘制和硬件加速能力对接。 23- Multi-language:多语言模块,用于处理不用不同语言文字的换行、整形等。 24- Image library:图片处理模块,用于解析和操作不同类型和格式的图片,例如png、jpeg、ARGB8888、ARGB565等 25- WindowManager:窗口管理模块,包括窗口创建、显示隐藏、合成等处理。 26- InputManager:输入事件管理模块。 27 28### 目录<a name="section141331948134020"></a> 29 30``` 31/foundation/graphic 32├── surface # 共享内存 33├── ui # UI模块,包括UI控件、动画、字体等功能 34├── utils # 图形基础库和硬件适配层 35└── wms # 窗口管理和输入事件管理 36``` 37 38### 约束<a name="section15729113104112"></a> 39 40- 图形组件不支持多线程并发操作,建议相关操作都在ui线程中执行; 41- utils/interfaces/innerkits/graphic\_config.h文件列举了图形部分可配置功能的宏开关,需要在编译前配置,配置时需要注意部分宏开关是分平台配置的。 42 43### 说明<a name="section812962919413"></a> 44 45参考各仓README以及test目录 46 47### 相关仓<a name="section12651205434115"></a> 48 49**图形子系统** 50 51[graphic\_surface](https://gitee.com/openharmony/graphic_surface) 52 53[graphic\_ui](https://gitee.com/openharmony/graphic_ui) 54 55[graphic\_wms](https://gitee.com/openharmony/graphic_wms) 56 57[graphic\_utils](https://gitee.com/openharmony/graphic_utils) 58 59## 1.2 标准系统<a name="section1249610812538"></a> 60 61### 简介<a name="section1374615251510"></a> 62 63**图形子系统** 提供了图形接口能力。 64 65其主要的结构如下图所示: 66 67![图形子系统架构图](figures/graphic_rosen_architecture.jpg) 68 69OpenHarmony 图形栈的分层说明如下: 70 71• 接口层:提供图形的 Native API能力,包括:WebGL、Native Drawing的绘制能力、OpenGL 指令级的绘制能力支撑等。 72 73• 框架层:分为 Render Service、Drawing、Animation、Effect、显示与内存管理五个模块。 74| 模块 | 能力描述 | 75|------------------------|--------------------------------------------------------------------------------------------| 76| Render Service (渲染服务) | 提供UI框架的绘制能力,其核心职责是将ArkUI的控件描述转换成绘制树信息,根据对应的渲染策略,进行最佳路径渲染。同时,负责多窗口流畅和空间态下UI共享的核心底层机制。 | 77| Drawing (绘制) | 提供图形子系统内部的标准化接口,主要完成2D渲染、3D渲染和渲染引擎的管理等基本功能。 | 78| Animation (动画) | 提供动画引擎的相关能力。 | 79| Effect (效果) | 主要完成图片效果、渲染特效等效果处理的能力,包括:多效果的串联、并联处理,在布局时加入渲染特效、控件交互特效等相关能力。 | 80| 显示与内存管理 | 此模块是图形栈与硬件解耦的主要模块,主要定义了OpenHarmony显示与内存管理的能力,其定义的HDI接口需要让不同的OEM厂商完成对OpenHarmony图形栈的适配. | 81 82• 引擎层:包括2D图形库和3D图形引擎两个模块。2D图形库提供2D图形绘制底层API,支持图形绘制与文本绘制底层能力。3D图形引擎能力尚在构建中。 83 84 85### 目录<a name="section16751364713"></a> 86 87``` 88foundation/graphic/standard/ 89├── figures # Markdown引用的图片目录 90├── frameworks # 框架代码目录 91│ ├── animation_server # AnimationServer代码 92│ ├── bootanimation # 开机动画目录 93│ ├── dumper # graphic dumper代码 94│ ├── fence # fence代码 95│ ├── surface # Surface代码 96│ ├── vsync # Vsync代码 97├── rosen # 框架代码目录 98│ ├── build # 构建说明 99│ ├── doc # doc 100│ ├── include # 对外头文件代码 101│ ├── lib # lib 102│ ├── modules # graphic 子系统各模块代码 103│ ├── samples # 实例代码 104│ ├── test # 开发测试代码 105│ ├── tools # 工具代码 106├── interfaces # 图形接口存放目录 107│ ├── innerkits # 内部native接口存放目录 108│ └── kits # js/napi外部接口存放目录 109└── utils # 小部件存放目录 110``` 111 112### 约束<a name="section126494189715"></a> 113 114语言版本:C++11及以上 115 116### 编译构建<a name="section883114292070"></a> 117 118### 说明<a name="section1351214227564"></a> 119 120参考各仓README以及test目录 121 122### 相关仓<a name="section11578621131119"></a> 123 124**图形子系统** 125 126- [**graphic_graphic_2d**](https://gitee.com/abbuu_openharmony/graphic_graphic_2d) 127- [arkui_ace_engine](https://gitee.com/openharmony/arkui_ace_engine) 128- [ability_ability_runtime](https://gitee.com/openharmony/ability_ability_runtime) 129- [multimedia_player_framework](https://gitee.com/openharmony/multimedia_player_framework) 130- [multimedia_image_standard](https://gitee.com/openharmony/multimedia_image_standard) 131- [Windowmanager](https://gitee.com/openharmony/windowmanager) 132- [third_party_egl](https://gitee.com/openharmony/third_party_egl) 133- [third_party_opengles](https://gitee.com/openharmony/third_party_opengles) 134- [third_party_skia](https://gitee.com/openharmony/third_party_skia) 135- [third_party_giflib](https://gitee.com/openharmony/third_party_giflib) 136