• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Drawing API示例(C/C++)
2
3#### 介绍
4
5Drawing模块提供包括2D图形渲染、文字绘制和图片显示等功能函数。这是一个基于Drawing图形库API(C/C++)的示例项目,展示如何使用Drawing API进行基础的2D图形绘制操作,详见[drawing](https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/graphics/graphic-drawing-overview.md)6
7#### 效果预览
8
9![startability](screenshot/startability.jpeg)
10![drawing_brush](screenshot/drawing_brush.jpeg)
11![drawing_pen](screenshot/drawing_pen.jpeg)
12![drawing_rect](screenshot/drawing_rect.jpeg)
13![drawing_path](screenshot/drawing_path.jpeg)
14![drawing_matrix](screenshot/drawing_matrix.jpeg)
15![drawing_canvas](screenshot/drawing_canvas.jpeg)
16![drawing_pixelmap](screenshot/drawing_pixelmap.jpeg)
17![drawing_bitmap](screenshot/drawing_bitmap.jpeg)
18![drawing_image](screenshot/drawing_image.jpeg)
19
20#### 具体实现
21
22使用Drawing进行图形绘制与显示时,需要使用Native Drawing模块的画布画笔绘制一个基本的2D图形;并将图形内容写入NativeWindow提供的图形Buffer,将Buffer提交到图形队列;再利用XComponent将C++代码层与ArkTS层对接,实现在ArkTS层调用绘制和显示的逻辑,并在应用上显示图形。
23
24### 使用说明
25
261. 在主界面,可以点击对应按钮,选择需要参考的API示例(主界面的一个按钮对应一个API头文件)。
27
282. 进入示例界面,查看参考示例(如果有按钮,需要点击按钮才能查看对应的场景示例)。
29
30#### 工程目录
31
32```
33├──entry/src/main
34│  ├──cpp                           // C++代码区
35│  │  ├──CMakeLists.txt             // CMake配置文件
36│  │  ├──napi_init.cpp              // Napi模块注册
37│  │  ├──common                     // 日志封装定义文件
38│  │  │  └──log_common.h
39│  │  ├──plugin                     // 生命周期管理模块
40│  │  │  ├──plugin_manager.cpp
41│  │  │  └──plugin_manager.h
42│  │  ├──samples                    // samples渲染及示例模块
43│  │  │  ├──sample_brush.cpp        // drawing_brush.h对应的cpp示例
44│  │  │  ├──sample_canvas.cpp       // drawing_canvas.h对应的cpp示例
45│  │  │  ├──sample_graphics.cpp     // samples渲染的cpp文件
46│  │  │  ├──sample_matrix.cpp       // drawing_matrix.h对应的cpp示例
47│  │  │  ├──sample_path.cpp         // drawing_path.h对应的cpp示例
48│  │  │  ├──sample_pen.cpp          // drawing_pen.h对应的cpp示例
49│  │  │  ├──sample_pixelmap.cpp     // drawing_pixelmap.h等文件对应的cpp示例
50│  │  │  ├──sample_rect.cpp         // drawing_rect.h对应的cpp示例
51│  │  │  └──sample_graphics.h       // samples渲染的头文件
52│  │  ├──types                      // 不涉及
53│  │  ├──utils                      // 多设备适配工具类
54│  │  │  ├──adaptation_utils.cpp
55│  │  │  └──adaptation_utils.h
56│  ├──ets                           // ets代码区
57│  │  ├──drawing
58│  │  │  ├──pages
59│  │  │  │  ├──BitmapDrawing.ets    // drawing_bitmap.h对应的示例展示界面
60│  │  │  │  ├──BrushDrawing.ets     // drawing_brush.h对应的示例展示界面
61│  │  │  │  ├──CanvasDrawing.ets    // drawing_canvas.h对应的示例展示界面
62│  │  │  │  ├──ImageDrawing.ets     // drawing_image.h对应的示例展示界面
63│  │  │  │  ├──MatrixDrawing.ets    // drawing_matrix.h对应的示例展示界面
64│  │  │  │  ├──PathDrawing.ets      // drawing_path.h对应的示例展示界面
65│  │  │  │  ├──PenDrawing.ets       // drawing_pen.h对应的示例展示界面
66│  │  │  │  ├──PixelMapDrawing.ets  // drawing_pixel_map.h对应的示例展示界面
67│  │  │  │  └──RectDrawing.ets      // drawing_rect.h对应的示例展示界面
68│  │  ├──entryability               // 不涉及
69│  │  ├──entrybackupability         // 不涉及
70|  |  ├──interface
71│  │  │  └──XComponentContext.ts    // XComponentContext
72│  │  └──pages                      // 页面文件
73│  │     └──Index.ets               // 主界面
74|  ├──resources                     // 资源文件目录(不涉及)
75```
76
77#### 相关权限
78
79暂无
80
81#### 依赖
82
83暂无
84
85## 约束和限制
86
871. 本示例支持标准系统上运行,支持设备:RK3568;
88
892. 本示例支持API14版本SDK,版本号:5.0.3.58;
90
913. 本示例已支持使DevEco Studio 5.0.11 Release (构建版本:5.0.11.100,构建 2025年4月22日)编译运行
92
93## 下载
94
95如需单独下载本工程,执行如下命令:
96
97```
98git init
99git config core.sparsecheckout true
100echo code/DocsSample/Drawing/NDKAPIDrawing/ > .git/info/sparse-checkout
101git remote add origin https://gitee.com/openharmony/applications_app_samples.git
102git pull origin master
103```