复杂文本绘制与显示(C++)
介绍
本工程主要实现了对以下指南文档中 复杂文本绘制 示例代码片段的工程化,主要目标是实现指南中示例代码需要与sample工程文件同源,以及除基本文字、排版属性之外,针对应用中不同文本的设计,开发者可能需要设置使用不同的绘制样式或能力,以凸显对应文本的独特表现或风格,此时可以结合使用多种绘制样式进行文本的渲染。
效果预览
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
使用说明
- 该工程可以选择在模拟器和开发板上运行。
- 点击构建,即可在生成的应用中点击对应的按钮进行图案的绘制。
- 进入“ArkGraphics2D/TextEngine/NDKComplexText1/entry/src/ohosTest/ets/test/DrawingAbility.test.ets”文件,可以对本项目进行UI的自动化测试。
工程目录
NDKComplexText1
├──entry/src/main
│ ├──cpp // C++代码区
│ │ ├──CMakeLists.txt // CMake配置文件
│ │ ├──napi_init.cpp // Napi模块注册
│ │ ├──common
│ │ │ └──log_common.h // 日志封装定义文件
│ │ ├──plugin // 生命周期管理模块
│ │ │ ├──plugin_manager.cpp
│ │ │ └──plugin_manager.h
│ │ ├──samples // samples渲染模块
│ │ │ ├──draw_text_impl.cpp
│ │ │ ├──sample_bitmap.cpp
│ │ │ └──sample_bitmap.h
│ ├──ets // ets代码区
│ │ ├──entryability
| | | └──EntryAbility.ets
│ │ └──pages // 页面文件
│ │ ├─ Index.ets // 主界面
│ │ ├─ NavTreePage.ets
│ │ └──NdkPage.ets
| ├──resources // 资源文件目录
具体实现
- 利用Native XComponent来获取NativeWindow实例、获取布局/事件信息、注册事件回调并通过Drawing API实现在页面上绘制形状。
- 通过在IDE中创建Native c++ 工程,在c++代码中定义对外接口,在js侧调用该接口可在页面上绘制出相对应的不同效果的文字。
- 在XComponent的OnSurfaceCreated回调中获取NativeWindow实例并初始化NativeWindow环境。调用OH_Drawing_TextStyle接口创建指向OH_Drawing_TextStyle对象的指针,调用OH_Drawing_SetTextStyleFontSize接口设置字号,OH_Drawing_SetTextStyleFontWeight接口设置字重,OH_Drawing_TextStyleAddFontFeature接口设置文本样式中指定字体特征是否启用,OH_Drawing_SetTypographyTextLocale接口来设置指定排版样式的语言环境,OH_Drawing_SetTypographyTextAlign接口设置文本对齐方式,OH_Drawing_SetTypographyTextWordBreakType接口设置单词的断词方式,OH_Drawing_SetTypographyTextMaxLines接口设置文本最大行数,OH_Drawing_SetTypographyStyleAttributeInt接口设置省略号模式(支持TAIL、HEAD、MIDDLE、MULTILINE_HEAD、MULTILINE_MIDDLE),OH_Drawing_SetTypographyTextBreakStrategy接口设置断行策略(支持GREEDY、HIGH_QUALITY、BALANCED),OH_Drawing_SetTypographyStyleAttributeBool接口传入TYPOGRAPHY_STYLE_ATTR_B_COMPRESS_HEAD_PUNCTUATION属性设置是否启用行首标点压缩。
相关权限
无。
依赖
不涉及。
约束和限制
- 本示例支持API26版本SDK,版本号:26.0.0。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo ArkGraphics2D/TextEngine/NDKComplexText1/ > .git/info/sparse-checkout
git remote add origin https://gitcode.com/HarmonyOS_Samples/guide-snippets.git
git pull origin master


































