| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 22-Oct-2025 | - | 35 | 32 | ||
| entry/ | 22-Oct-2025 | - | 3,504 | 2,673 | ||
| hvigor/ | 22-Oct-2025 | - | 38 | 36 | ||
| screenshot/ | 22-Oct-2025 | - | ||||
| .gitignore | D | 22-Oct-2025 | 133 | 12 | 12 | |
| README.md | D | 22-Oct-2025 | 4.4 KiB | 105 | 81 | |
| build-profile.json5 | D | 22-Oct-2025 | 1.3 KiB | 57 | 56 | |
| code-linter.json5 | D | 22-Oct-2025 | 958 | 35 | 34 | |
| hvigorfile.ts | D | 22-Oct-2025 | 843 | 22 | 5 | |
| oh-package.json5 | D | 22-Oct-2025 | 809 | 26 | 24 | |
| ohosTest.md | D | 22-Oct-2025 | 2.6 KiB | 14 | 12 |
README.md
1# NDKGraphicsDraw 2 3## 介绍 4 5本示例基于开发>图形->ArkGraphics 2D(方舟2D图形服务)-> [图形绘制与显示](https://gitee.com/openharmony/docs/tree/OpenHarmony-5.0.1-Release/zh-cn/application-dev/graphics#/openharmony/docs/blob/OpenHarmony-5.0.1-Release/zh-cn/application-dev/graphics/textblock-drawing-arkts.md)中的NDK部分开发。 6 7本示例主要功能如下: 8 9- 演示画布的获取与绘制结果的显示,画布的类型分为直接画布与离屏画布。 10- 演示画布操作及状态处理,通过对画布进行裁剪、平移等操作控制绘图结果 11- 演示绘制效果,绘制经过填充、描边、着色器、滤波器等效果处理过后的图形。 12- 演示图元绘制,绘制多种几何形状、绘制位图及绘制字块。 13 14## 效果预览 15 16| 主页 | 画布获取 | 绘制效果 | 图元绘制 | 17| --------------------------------- | ----------------------------------- | ----------------------------------- | --------------------------------- | 18|  |  |  |  | 19 20 21使用说明: 22 231. 点击主页的导航标签组件,进入对应的演示页面。演示页面包括: 24 - 画布的获取与绘制结果的显示 25 - 画布操作及状态处理 26 - 基础绘制效果 27 - 复杂绘制效果 28 - 几何图形绘制 29 - 图片绘制 30 - 字块绘制 312. 在演示页面内点击绘制按钮,界面绘制出对应图案。 323. 点击返回按钮,退出应用。 33 34## 工程目录 35 36``` 37NDKGraphicsDraw 38entry/src/main 39├──cpp 40│ ├──common 41│ │ └──log_common.h (Log相关定义声明) 42│ ├──plugin 43│ │ ├──plugin_manager.cpp (生命周期管理类) 44│ │ └──plugin_manager.h 45│ ├──samples 46│ │ ├──sample_graphics.cpp (图形绘制类) 47│ │ └──sample_graphics.h 48│ ├──CMakeLists.txt (CMake编译配置文件) 49│ └──napi_init.cpp (初始化Napi接口) 50├──ets 51│ ├──drawing 52| | └──pages 53| | ├──BasicEffect.ets (基础渲染效果界面) 54| | ├──CanvasGetResult.ets (画布的获取与绘制结果的显示界面) 55| | ├──CanvasOperationState.ets (画布操作及状态处理界面) 56| | ├──ComplexEffect.ets (复杂绘制效果界面) 57| | ├──PixelMapDrawing.ets (图片绘制界面) 58| | ├──ShapeDrawing.ets (几何形状绘制界面) 59| | └──TextBlockDrawing.ets (字块绘制界面) 60| ├──interface 61│ │ └──XComponentContext.ts (声明Napi接口,供ts侧调用) 62│ └──pages 63│ └──Index.ets (UI主界面) 64└──resources (资源文件) 65entry/src/ohosTest/ets/ 66├── test 67| ├── Ability.test.ets (UI测试代码) 68| └── List.test.ets (测试套件列表) 69└── utils 70 └── Logger.ets (logger日志类) 71``` 72 73## 具体实现 74 751. 利用Native XComponent来获取NativeWindow实例、获取布局/事件信息、注册事件回调并通过Drawing API实现在页面上绘制形状。功能主要包括演示画布获取、画布操作、绘制效果和绘制图形、图形、文字。 762. 通过在IDE中创建Native c++ 工程,在c++代码中定义对外接口为draw,在js侧调用该接口。draw通过解析传入的参数创建不同的画布类型,初始化并调用对应的具体绘图函数。 773. 在XComponent的OnSurfaceCreated回调中获取NativeWindow实例并初始化NativeWindow环境。调用OH_NativeXComponent_GetXComponentSize接口获取XComponent的宽高,并以此为输入调用Drawing相关的绘制接口在NativeWindow上绘制出图案。 78 79## 相关权限 80 81不涉及 82 83## 依赖 84 85不涉及。 86 87## 约束和限制 88 891. 本示例支持标准系统上运行,支持设备:RK3568; 90 912. 本示例支持API14版本SDK,版本号:5.0.2.58; 92 933. 本示例已支持使DevEco Studio 5.0.1 Release (构建版本:5.0.5.306,构建 2024年12月6日)编译运行 94 95## 下载 96 97如需单独下载本工程,执行如下命令: 98 99``` 100git init 101git config core.sparsecheckout true 102echo code/DocsSample/Drawing/NDKGraphicsDraw/ > .git/info/sparse-checkout 103git remote add origin OpenHarmony/applications_app_samples 104git pull origin master 105```