Imported from rshu/VeriKit (
skills/arkgraphics-2d/SKILL.md). Install upstream withnpx skills add rshu/VeriKit --skill arkgraphics-2d. Copyright stays with the author.
功能说明
ArkGraphics 2D(方舟2D图形服务)主要提供图形绘制与显示相关的能力。开发者可以基于一套统一的图形接口进行应用开发,实现灵活的自定义2D图形绘制效果。核心能力包括图像效果处理(亮度调节、模糊化、灰度调节、智能取色)、色彩管理、可变帧率(支持同窗口多帧率和帧率动态配置)、HDR高动态显示以及完善的自绘制能力。
自绘制能力是ArkGraphics 2D的核心特性,支持ArkTS和C/C++两种开发语言。绘制流程包括四个关键步骤:创建画布、画布操作(裁剪、旋转、缩放)、设置绘制效果(通过画刷Brush和画笔Pen实现填充和描边效果)以及绘制图元(几何形状、字块、图片)。文本绘制方面,支持简单文本、自定义文本和复杂文本三种绘制模式,并提供文本测量、系统字体获取、自定义字体注册、主题字体使用等完整的字体管理能力。ArkTS侧通过RenderNode上屏显示,C/C++侧通过XComponent上屏显示。
ArkGraphics 2D还提供了丰富的Native图形能力,包括NativeWindow(窗口管理)、NativeBuffer(图形缓冲区)、NativeImage(图像处理)、NativeVSync(垂直同步)和NativeDisplaySoloist(显示独奏器)等C/C++接口。亮点特征包括同个窗口支持多个帧率、帧率动态配置兼顾体验与功耗、录制回放机制提升交互体验,以及多种渲染后端支持降低多端适配成本。
使用场景
当ArkUI标准组件无法满足自定义图形绘制需求时,请使用ArkGraphics 2D的Drawing模块实现灵活的自定义绘制效果。适用于游戏渲染、数据可视化图表、专业绘图工具、自定义动画效果等需要精细控制图形绘制的场景。对于性能要求高、绘制复杂、硬件依赖性强的场景,推荐使用C/C++ Native Drawing接口。
当应用需要自定义文本绘制与显示、字体管理(系统字体获取、自定义字体注册)、可变帧率控制、图像效果处理,或需要使用Native图形能力(如NativeWindow、NativeBuffer)时,请使用ArkGraphics 2D提供的对应能力。可变帧率特别适用于游戏和视频等需要根据场景动态调整帧率以平衡流畅性与功耗的场景。
典型场景
- 如何使用Drawing模块实现自定义几何形状、文本和图片的绘制
- 如何获取画布并将绘制结果显示到屏幕上(ArkTS通过RenderNode,C/C++通过XComponent)
- 如何设置画刷和画笔实现丰富的填充效果和描边效果
- 如何注册和使用自定义字体以及获取系统字体信息
- 如何实现简单文本、自定义文本和复杂文本的绘制与显示
- 如何请求和配置可变帧率以平衡绘制性能与功耗
- 如何使用NativeWindow和NativeBuffer等Native图形能力进行图形开发
- 如何处理文本开发中找不到字形的字符显示问题
- 如何使用过度绘制调试工具排查图形性能问题
使用指南
重要提示: 本Kit的references目录下包含大量详细参考文档。在查询时,请根据用户的具体问题,仅加载references中与问题相关的MD文件进行阅读,不要一次性加载所有文件,以免上下文过长影响回答质量。先通过标题和描述判断哪些文件与当前问题相关,再针对性地读取。
参考文档
Kit简介与术语
- [ArkGraphics 2D简介](references/ArkGraphics 2D简介.md) - 介绍ArkGraphics 2D的能力范围、使用场景和亮点特征
- 图形开发术语 - 解释图形开发中涉及的专业术语
图形绘制与显示概述
- 图形绘制与显示开发概述 - 介绍图形绘制的场景、能力范围、实现流程及显示方式
- 图元绘制概述 - 介绍图元绘制的基本概念和支持的图元类型
- 绘制效果概述 - 介绍绘制效果的分类和基本概念
- 文本开发概述 - 介绍文本开发的能力范围和基本概念
文本绘制与显示
- 简单文本绘制与显示(ArkTS) - 说明如何使用ArkTS语言进行简单文本的绘制与显示
- 简单文本绘制与显示(C_C++) - 说明如何使用C/C++语言进行简单文本的绘制与显示
- 自定义文本绘制与显示(ArkTS) - 说明如何使用ArkTS语言进行自定义文本的绘制与显示
- 自定义文本绘制与显示(C_C++) - 说明如何使用C/C++语言进行自定义文本的绘制与显示
- 复杂文本绘制与显示(ArkTS) - 说明如何使用ArkTS语言进行复杂文本的绘制与显示
- 复杂文本绘制与显示(C_C++) - 说明如何使用C/C++语言进行复杂文本的绘制与显示
- 文本测量(ArkTS) - 说明如何使用ArkTS语言进行文本测量
- 文本测量(C_C++) - 说明如何使用C/C++语言进行文本测量
- 文本开发常见问题 - 汇总文本开发中的常见问题及解决方法
字体管理
- 系统字体的信息获取和使用(ArkTS) - 说明如何使用ArkTS语言获取系统字体信息并使用系统字体
- 系统字体的信息获取和使用(C_C++) - 说明如何使用C/C++语言获取系统字体信息并使用系统字体
- 自定义字体的注册和使用(ArkTS) - 说明如何使用ArkTS语言注册和使用自定义字体
- 自定义字体的注册和使用(C_C++) - 说明如何使用C/C++语言注册和使用自定义字体
- 使用主题字体(ArkTS) - 说明如何使用ArkTS语言使用主题字体
- 使用主题字体(C_C++) - 说明如何使用C/C++语言使用主题字体
图元绘制
- 几何形状绘制(ArkTS) - 说明如何使用ArkTS语言绘制几何形状
- 几何形状绘制(C_C++) - 说明如何使用C/C++语言绘制几何形状
- 字块绘制(ArkTS) - 说明如何使用ArkTS语言进行字块绘制
- 字块绘制(C_C++) - 说明如何使用C/C++语言进行字块绘制
- 图片绘制(ArkTS) - 说明如何使用ArkTS语言进行图片绘制
- 图片绘制(C_C++) - 说明如何使用C/C++语言进行图片绘制
绘制效果
- 基础绘制效果(ArkTS) - 说明如何使用ArkTS语言设置基础绘制效果
- 基础绘制效果(C_C++) - 说明如何使用C/C++语言设置基础绘制效果
- 复杂绘制效果(ArkTS) - 说明如何使用ArkTS语言设置复杂绘制效果
- 复杂绘制效果(C_C++) - 说明如何使用C/C++语言设置复杂绘制效果
- 添加图像效果(C_C++) - 说明如何使用C/C++语言添加图像效果处理
画布操作
- 画布的获取与绘制结果的显示(ArkTS) - 说明如何使用ArkTS语言获取画布并将绘制结果显示到屏幕
- 画布的获取与绘制结果的显示(C_C++) - 说明如何使用C/C++语言获取画布并将绘制结果显示到屏幕
- 画布操作及状态处理(ArkTS) - 说明如何使用ArkTS语言进行画布操作和状态处理
- 画布操作及状态处理(C_C++) - 说明如何使用C/C++语言进行画布操作和状态处理
可变帧率
- 可变帧率简介 - 介绍可变帧率的概念、作用和使用场景
- 请求UI绘制帧率 - 说明如何请求和配置UI绘制的帧率
- 请求动画绘制帧率 - 说明如何请求和配置动画绘制的帧率
- 请求自绘制内容绘制帧率 - 说明如何请求和配置自绘制内容的绘制帧率
Native图形能力
- [NativeWindow开发指导 (C_C++)](references/NativeWindow开发指导 (C_C++).md) - 介绍NativeWindow的C/C++开发指导
- [NativeBuffer开发指导 (C_C++)](references/NativeBuffer开发指导 (C_C++).md) - 介绍NativeBuffer的C/C++开发指导
- [NativeImage开发指导 (C_C++)](references/NativeImage开发指导 (C_C++).md) - 介绍NativeImage的C/C++开发指导
- [NativeVSync开发指导 (C_C++)](references/NativeVSync开发指导 (C_C++).md) - 介绍NativeVSync的C/C++开发指导
- [NativeDisplaySoloist开发指导 (C_C++)](references/NativeDisplaySoloist开发指导 (C_C++).md) - 介绍NativeDisplaySoloist的C/C++开发指导
- [GPU_CPU内存访问同步操作开发指南 (C_C++)](references/GPU_CPU内存访问同步操作开发指南 (C_C++).md) - 说明如何使用C/C++进行GPU与CPU之间的内存访问同步操作
调试与问题排查
- 过度绘制调试使用指导 - 介绍过度绘制调试工具的使用方法
- [图形缓冲区常见稳定性问题 (C_C++)](references/图形缓冲区常见稳定性问题 (C_C++).md) - 汇总图形缓冲区开发中常见的稳定性问题及解决方案
References / 参考文档索引
Auto-generated by VeriKit from this Kit's reference manifest — 48 document(s) shipped under references/. Each link points at a real file in the plugin tree; load any with the agent's file-read tool.
- ArkGraphics 2D简介 — ArkGraphics 2D(方舟2D图形服务 )主要提供图形绘制与显示相关的能力。开发者可以基于一套统一的图形接口进行应用开发,使应用开发更简单、高效。 #### 能力范围 - 提供图像处理的一些基本能力,包括对当前图像的亮度调节、模糊化、灰度调节、智能取色等。具体可见 @ohos.effectKit (图像效果) 。 - 提供管理抽象化色域对象的基础能力…
references/ArkGraphics 2D简介.md - GPU/CPU内存访问同步操作开发指南 (C/C++) — NativeFence是管理fenceFd同步状态的模块。开发者可通过其接口实现以下功能:设置阻塞时间、永久阻塞、关闭fenceFd以及检查其有效性。 #### 接口说明 详细的接口说明请参考 NativeFence 。 #### 开发步骤 以下步骤描述了如何使用NativeFence提供的Native API接口。 添加动态链接库 CMakeLis…
references/GPU_CPU内存访问同步操作开发指南 (C_C++).md - NativeBuffer开发指导 (C/C++) — NativeBuffer模块提供 共享内存 功能,支持内存的申请、使用、查询和释放等操作。 NativeBuffer的常见开发场景:通过Native API申请OH_NativeBuffer实例,获取内存属性,将ION内存映射到进程空间。 #### 接口说明 详细的接口说明请参考 native_buffer 。 #### 开发步骤 以下步骤描述了如何…
references/NativeBuffer开发指导 (C_C++).md - NativeDisplaySoloist开发指导 (C/C++) — 如果开发者想在独立线程中实现帧率控制的Native侧业务,可以通过DisplaySoloist来实现,如游戏、自绘制UI框架对接等场景。 开发者可以选择多个DisplaySoloist实例共享一个线程,也可以选择每个DisplaySoloist实例独占一个线程。 #### 接口说明 详细的接口说明请参考 NativeDisplaySoloist 。 ####…
references/NativeDisplaySoloist开发指导 (C_C++).md - NativeImage开发指导 (C/C++) — NativeImage是提供 Surface与OpenGL外部纹理相互绑定 的模块,表示图形队列的消费者端。开发者可以通过NativeImage接口接收和使用Buffer,并将Buffer关联输出到绑定的OpenGL外部纹理。 NativeImage常见的开发场景如下: - 通过NativeImage提供的Native API接口创建NativeIm…
references/NativeImage开发指导 (C_C++).md - NativeVSync开发指导 (C/C++) — NativeVSync模块用于获取系统VSync信号,提供OH_NativeVSync实例的创建、销毁及设置VSync回调函数的功能。VSync信号触发时,将调用已设置的回调函数。 #### 接口说明 详细的接口说明请参考 native_vsync 。 #### 开发步骤 以下步骤描述如何使用NativeVSync提供的Native API接口创建和销毁OH…
references/NativeVSync开发指导 (C_C++).md - NativeWindow开发指导 (C/C++) — NativeWindow是 本地平台化窗口 ,表示图形队列的生产者端。开发者可以通过NativeWindow接口进行申请和提交Buffer,配置Buffer属性信息。 针对NativeWindow,常见的开发场景如下: - 通过NativeWindow提供的Native API接口申请图形Buffer,并将生成的图形内容写入图形Buffer,最终提交…
references/NativeWindow开发指导 (C_C++).md - 使用主题字体(ArkTS) — 主题字体,特指系统 主题应用 中能使用的字体,属于一种特殊的自定义字体,可以通过相关接口调用使能主题应用中的主题字体。 #### 实现机制 图1 主题字体的切换和使用 针对主题字的切换使用,应用方应确保订阅主题字体变更事件,当接收到字体变更事件后,由应用方主动调用页面刷新才能实现主题字的切换,否则主题字只能在重启应用后才生效。 #### 接口…
references/使用主题字体(ArkTS).md - 使用主题字体(C/C++) — 主题字体,特指系统 主题应用 中能使用的字体,属于一种特殊的自定义字体。可以通过相关接口调用使能主题应用中的主题字体。 #### 实现机制 图1 主题字体的切换和使用 针对主题字的切换使用,应用方应确保订阅主题字变更事件,当接收字体变更事件后,由应用方主动调用页面刷新才能实现主题字的切换,否则主题字只能在重启应用后才生效;主题字的绘制需要使用…
references/使用主题字体(C_C++).md - 几何形状绘制(ArkTS) — 当前支持绘制的几何形状,主要包括以下几种: - 点 - 圆弧 - 圆 - 路径 - 区域 - 矩形 - 圆角矩形 大部分的几何形状均可以选择使用画笔或使用画刷来实现绘制,其中点的绘制只能使用画笔。 #### 接口说明 几何形状绘制的常用接口如下表所示,详细的使用和参数说明请见 drawing.Canvas 。 #### 绘制点 点只能基于画笔在画布上进行绘制…
references/几何形状绘制(ArkTS).md - 几何形状绘制(C/C++) — 当前支持绘制的几何形状,主要包括以下几种: - 点 - 圆弧 - 圆 - 路径 - 区域 - 矩形 - 圆角矩形 大部分的几何形状均可以选择使用画笔或者使用画刷来实现绘制,其中点的绘制只能使用画笔。 #### 接口说明 几何形状绘制的常用接口如下表所示,详细的使用和参数说明请见 drawing_canvas.h 。 #### 绘制点 点只能基于画笔在画布上进…
references/几何形状绘制(C_C++).md - 可变帧率简介 — 随着设备屏幕的不断演进,当前主流设备采用LTPO屏幕,此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容,如射击游戏,交互动画等,显示帧率越高,画面越流畅,但是相对的功耗也会越高。 而低速变化的内容,如游戏大厅,时钟更新动画等,画面更新频率较低,使用相对低的显示帧率,用户也不会觉得卡顿,但是相对的功耗就比较低。 基于显示内容的可变帧率能力,在具备L…
references/可变帧率简介.md - 图元绘制概述 — 无论多复杂的图形,都是由基础的图元组合而来。Canvas画布提供了丰富的图元绘制功能,可以满足各种基础图元的绘制需求。本节介绍了几何形状绘制(点、圆、矩形等),图片绘制和字块绘制,并提供了示例代码,开发者可以在此基础上实现需要的UI效果。 图元绘制是图形绘制的最后一步,图元绘制之前需要先创建Canvas并按需设置必要的绘制效果。
references/图元绘制概述.md - 图形开发术语 — BlendMode,混合模式,定义当前内容和已有内容如何相互作用产生新的效果,不同的混合模式相互作用叠加的计算方式和效果也会对应有所不同。 #### 字块 字块,TextBlob,是指使用相同字体的字形元素及其位置的集合。 #### 字型 字型,Font,用于管理字体绘制相关属性,包括字体、大小、缩放比例等。 #### 字体 字体,Typeface,是用于将…
references/图形开发术语.md - 图形绘制与显示开发概述 — 应用在开发中,经常需要针对不同的元素内容进行绘制,开发者通常可以选择直接使用ArkUI组件来绘制想要的元素或效果,但有些自定义图形或效果无法满足,此时可以选择使用Drawing来实现灵活的自定义绘制效果。另外,ArkUI组件具备直接上屏显示的能力,而Drawing更加关注绘制,需要依靠其他模块来完成绘制结果的上屏显示。 #### 绘制能力范围及实现流程 **…
references/图形绘制与显示开发概述.md - 图形缓冲区常见稳定性问题 (C/C++) — 本文档主要针对NativeWindow、NativeBuffer和NativeImage开发过程中的常见问题进行说明,帮助开发者及时避免或定位对应问题,提高应用稳定性。 #### OHNativeWindow与NativeWindowBuffer OHNativeWindow与NativeWindowBuffer在系统多个模块与应用之间传递,通过增加与减少引…
references/图形缓冲区常见稳定性问题 (C_C++).md - 图片绘制(ArkTS) — 位图是一种用于在内存中存储和表示图像的数据结构,它是一个未经过压缩的像素集合,而JPEG或PNG等格式的图片是压缩格式的,两者并不相同。如果需要将JPEG或PNG绘制到屏幕上,需要先解码成位图格式,具体可参考 图片处理服务(Image Kit) 图片解码相关章节。 目前Drawing(ArkTS)中位图绘制需要依赖PixelMap,它可以用于读取或写入图像数…
references/图片绘制(ArkTS).md - 图片绘制(C/C++) — 位图是一种用于在内存中存储和表示图像的数据结构,它是一个未经过压缩的像素集合,而JPEG或PNG等图片是压缩格式的,两者并不相同。如果需要将JPEG或PNG绘制到屏幕上,需要先解码成位图格式,具体可参考 图片处理服务(Image Kit) 图片解码相关章节。 目前Drawing(C/C++)中位图绘制需要依赖PixelMap,它可以用于读取或写入图像数据以及…
references/图片绘制(C_C++).md - 基础绘制效果(ArkTS) — 在进行绘制时,可以进行一些基础效果的设置,比如设置填充颜色、设置抗锯齿、设置图形描边、设置图形线条连接样式等。 主要通过画刷(Brush)设置填充基础效果,通过画笔(Pen)设置描边基础效果。 #### 填充效果 可以通过画刷设置基础的填充颜色,还可以通过画刷使用混合模式、着色器效果、滤波器效果等实现更多复杂绘制效果,具体可见 复杂绘制效果 。 #### 接…
references/基础绘制效果(ArkTS).md - 基础绘制效果(C/C++) — 在进行绘制时,可以进行一些基础效果的设置,比如设置填充颜色、设置抗锯齿、设置图形描边、设置图形线条连接样式等。 主要通过画刷(Brush)设置填充基础效果,通过画笔(Pen)设置描边基础效果。 #### 填充效果 可以通过画刷设置基础的填充颜色,还可以通过画刷使用混合模式、着色器效果、滤波器效果等实现更多复杂绘制效果,具体可见 复杂绘制效果 。 #### 接…
references/基础绘制效果(C_C++).md - 复杂文本绘制与显示(ArkTS) — 在进行文本绘制时,可以通过选择合适的字体、大小和颜色完成简单文本的绘制与显示;此外,还支持通过设置其他丰富的样式、语言、段落等进行复杂文本的绘制。 复杂文本绘制主要包含以下几个场景: - 多语言文本绘制与显示 - 多行文本绘制与显示 - 多样式文本绘制与显示 #### 多语言文本绘制与显示 多语言支持是全球化应用的基础。多语言文本绘制需要支持不同语言的字符集…
references/复杂文本绘制与显示(ArkTS).md - 复杂文本绘制与显示(C/C++) — 在进行文本绘制时,可以通过选择合适的字体、大小和颜色完成简单文本的绘制与显示;此外,还支持通过设置其他丰富的样式、语言、段落等进行复杂文本的绘制。 复杂文本绘制主要包含以下几个场景: - 多语言文本绘制与显示 - 多行文本绘制与显示 - 多样式文本绘制与显示 - 样式的拷贝、绘制与显示 #### 多语言文本绘制与显示 多语言支持是全球化应用的基础。多语言文本…
references/复杂文本绘制与显示(C_C++).md - 复杂绘制效果(ArkTS) — 除了基础填充颜色、描边颜色和一些样式设置的绘制效果外,还支持通过画刷和画笔实现更多复杂的绘制效果。比如: - 混合模式。 - 路径效果,如虚线效果。 - 着色器效果,如线性渐变、径向渐变等。 - 滤波效果,如模糊效果等。 #### 混合模式 混合模式可以用于画笔或画刷,它定义了如何将源像素(要绘制的内容)与目标像素(已存在于画布上的内容)进行组合。 可以使用…
references/复杂绘制效果(ArkTS).md - 复杂绘制效果(C/C++) — 除了基础填充颜色、描边颜色和一些样式设置的绘制效果外,还支持通过画刷和画笔实现更多复杂的绘制效果。比如: - 混合模式。 - 路径效果,如虚线效果。 - 着色器效果,如线性渐变、径向渐变等。 - 滤波效果,如模糊效果等。 #### 混合模式 混合模式可以用于画笔或画刷,它定义了如何将源像素(要绘制的内容)与目标像素(已存在于画布上的内容)进行组合。 可以使用…
references/复杂绘制效果(C_C++).md - 字块绘制(ArkTS) — 字块(TextBlob)是指文本的集合。无论是单个的文字还是大块的文本,都可以通过字块来绘制。 除了基本的字块绘制之外,还可以给文字添加各种绘制效果。常见的字块绘制场景包括 文字描边 、 文字渐变 等,更多效果请见 绘制效果 。 本节不涉及文本测量和布局排版相关内容,如需在开发中处理此类文本绘制需求,可参考 文本开发概述 ,该文档系统讲解了排版策略与相关使用…
references/字块绘制(ArkTS).md - 字块绘制(C/C++) — 字块(TextBlob)是指文本的集合。无论是单个的文字还是大块的文本,都可以通过字块来绘制。 除了基本的字块绘制之外,还可以给文字添加各种绘制效果。常见的字块绘制场景包括 文字描边 、 文字渐变 等,更多效果请见 绘制效果 。 本节不涉及文本测量和布局排版相关内容,如需在开发中处理此类文本绘制需求,可参考 文本开发概述 ,该文档系统讲解了排版策略与相关使用…
references/字块绘制(C_C++).md - 文本开发常见问题 — 目前对于找不到字形的字符默认显示为空白,可能让用户感到困惑。 系统提供开关,开启后,未找到字形的字符会显示为豆腐块。 - 在ArkTS环境中,可以使用setTextUndefinedGlyphDisplay接口开启开关,找不到字形的字符会强制显示为豆腐块。 import { text } from "@kit.ArkGraphics2D"; text.set…
references/文本开发常见问题.md - 文本开发概述 — 应用在开发和布局时,经常需要针对文本元素和内容进行排版、测量、绘制和显示等。字体引擎开发框架提供了一系列接口能力用于支持应用布局文本和管理字体。 #### 能力范围 图1 字体引擎能力结构图 当前字体引擎开发框架支持在应用中对文字、emoji表情、placeholder等文本元素进行塑形、排版、测量和绘制显示。 开发者可以选择使用不同的ArkTS语言…
references/文本开发概述.md - 文本测量(ArkTS) — 文本测量指的是在图形绘制中,对文本的尺寸和布局进行评估,计算文本在给定字体和样式下占用的空间(例如宽度、高度和其他相关信息)的过程。文本测量用于文本排版、布局、渲染以及调整文本显示的位置和大小等场景,便于更精准地控制与调整界面的布局和呈现,以达到设计预期。 当前主要支持以下方面的文本测量能力: - 文本宽度 :测量给定文本在特定字体、大小和样式下的水…
references/文本测量(ArkTS).md - 文本测量(C/C++) — 文本测量指的是在图形绘制中,对文本的尺寸和布局进行评估,计算文本在给定字体和样式下占用的空间(例如宽度、高度和其他相关信息)的过程。文本测量用于文本排版、布局、渲染以及调整文本显示的位置和大小等场景,便于更精准地控制与调整界面的布局和呈现,以达到设计预期。 当前主要支持以下方面的文本测量能力: - 文本宽度 :测量给定文本在特定字体、大小和样式下的水…
references/文本测量(C_C++).md - 添加图像效果(C/C++) — 在离线处理图像时,可以进行一些图像效果的设置以获取视觉上的不同呈现,比如设置图像模糊程度、调节图像亮度和灰度、设置图像反色等。 主要基于滤镜(Filter)设置不同的图像效果。 #### 接口说明 使用滤镜(Filter)设置图像效果的常用接口如下表所示,详细使用和参数请见 effect_filter 。 #### 开发步骤 1. 在Native工程的src…
references/添加图像效果(C_C++).md - 画布操作及状态处理(ArkTS) — 创建或获取Canvas画布之后,可以基于画布进一步地进行图形操作和状态处理。画布操作属于可选操作,开发者可以根据场景需要进行。需要先进行画布操作,再进行后续绘制,只有这样画布操作才有效果。 常见的画布操作如下: - 裁剪。 - 矩阵变换,如平移、缩放、旋转等。 - 状态保存与恢复。 更多画布操作和具体接口参数使用,请见 drawing.Canvas 。 ##…
references/画布操作及状态处理(ArkTS).md - 画布操作及状态处理(C/C++) — 创建或获取Canvas画布之后,可以基于画布进一步地进行图形操作和状态处理。画布操作属于可选操作,开发者可以根据场景需要进行。需要先进行画布操作,再进行后续绘制,只有这样画布操作才有效果。 常见的画布操作如下: - 裁剪。 - 矩阵变换,如平移、缩放、旋转等。 - 状态保存与恢复。 #### 裁剪操作 裁剪是图形处理中的常见操作,裁剪针对的是画布本身,可以用…
references/画布操作及状态处理(C_C++).md - 画布的获取与绘制结果的显示(ArkTS) — Canvas即画布,提供绘制基本图形的能力,用于在屏幕上绘制图形和处理图形。开发者可以通过Canvas实现自定义的绘图效果,增强应用的用户体验。 Canvas是图形绘制的核心,本章中提到的所有绘制操作(包括基本图形的绘制、文字的绘制、图片的绘制、图形变换等)都是基于Canvas的。 目前ArkTS有两种获取Canvas的方式: 获取可直接显示的Canvas画…
references/画布的获取与绘制结果的显示(ArkTS).md - 画布的获取与绘制结果的显示(C/C++) — Canvas即画布,提供绘制基本图形的能力,用于在屏幕上绘制图形和处理图形。开发者可以通过Canvas实现自定义的绘图效果,增强应用的用户体验。 Canvas是图形绘制的核心,本章中提到的所有绘制操作(包括基本图形的绘制、文字的绘制、图片的绘制、图形变换等)都是基于Canvas的。 目前C/C++有两种获取Canvas的方式:获取可直接上屏显示的Canvas…
references/画布的获取与绘制结果的显示(C_C++).md - 简单文本绘制与显示(ArkTS) — 在一个简单的用户界面中,可能只需要展示几行静态文本,例如标签、按钮上的文字、菜单项或状态栏中的提示信息。此时,开发者只需要选择合适的字体、大小和颜色即可完成渲染。 #### 相关属性 此场景示例,涉及到的文本样式属性如下,具体及更多文本样式可参考 TextStyle 。 - color:字体颜色,默认为白色。请注意与画布颜色进行区分,以保证文本的正常显示。 …
references/简单文本绘制与显示(ArkTS).md - 简单文本绘制与显示(C/C++) — 在一个简单的用户界面中,可能只需要展示几行静态文本,例如标签、按钮上的文字、菜单项或状态栏中的提示信息。此时,开发者只需要选择合适的字体、大小和颜色即可完成渲染。 #### 接口说明 #### 开发步骤 1. 创建Canvas画布对象,画布Canvas对象创建方法具体可见 画布的获取与绘制结果的显示 。 2. 初始化段落样式,设置文本对齐方式为居中对齐。 /…
references/简单文本绘制与显示(C_C++).md - 系统字体的信息获取和使用(ArkTS) — 系统字体是指操作系统预设的字体,用于在没有指定自定义字体时显示文本,确保文本的可读性和一致性。 使用系统字体 的情况通常是在应用未注册自定义字体,或在没有显式指定文本样式时,系统会使用默认的系统字体。另外,系统字体有多种,开发者可以先获取系统字体的配置信息,并根据信息中的字体家族名来进行系统字体的切换和使用。 当前ArkTS侧暂不支持禁用系统字体,N…
references/系统字体的信息获取和使用(ArkTS).md - 系统字体的信息获取和使用(C/C++) — 系统字体是指操作系统预设的字体,用于在没有指定自定义字体时显示文本,确保文本的可读性和一致性。默认的系统字体为“HarmonyOS Sans”。 使用系统字体 的情况通常是在应用未注册自定义字体,或在没有显式指定文本样式时,系统会使用默认的系统字体。另外,系统字体有多种,开发者可以先获取系统字体的配置信息,并根据信息中的字体家族名来进行系统字体的切换…
references/系统字体的信息获取和使用(C_C++).md - 绘制效果概述 — Canvas在创建后会有默认的填充和描边效果,可以直接进行图元的绘制。但多数情况下默认的效果并不能满足需要,比如默认的颜色是黑色,只能绘制黑色的图形,默认没有模糊或渐变效果等。如果需要更多的绘制效果,比如绘制红色的图形、添加模糊效果或渐变效果等,则需要给Canvas设置自定义的画刷(Brush)或者画笔(Pen)。 画刷(Brush)用于实现填充效果,针对的…
references/绘制效果概述.md - 自定义字体的注册和使用(ArkTS) — 自定义字体是指开发者根据应用需求创建或选择的字体,通常用于实现特定的文字风格或满足独特的设计要求。当应用需要使用特定的文本样式和字符集时,可以注册并使用自定义字体进行文本渲染。 #### 实现流程 自定义字体的注册 是指将字体文件(如ttf、otf文件等)从应用资源注册到系统中,使得应用能够使用这些字体进行文本渲染。注册过程是将字体文件通过字体管理接…
references/自定义字体的注册和使用(ArkTS).md - 自定义字体的注册和使用(C/C++) — 自定义字体是指开发者根据应用需求创建或选择的字体,通常用于实现特定的文字风格或满足独特的设计要求。当应用需要使用特定的文本样式和字符集时,可以注册并使用自定义字体进行文本渲染。 #### 实现流程 自定义字体的注册 是指将字体文件(如ttf、otf文件等)从应用资源注册到系统中,使得应用能够使用这些字体进行文本渲染。注册过程通常指将字体文件通过字体管…
references/自定义字体的注册和使用(C_C++).md - 自定义文本绘制与显示(ArkTS) — 在复杂的文本排版场景中,当系统提供的标准文本组件无法满足特定的视觉或交互需求时,开发者可以利用ArkGraphics 2D提供的底层文本绘制能力,通过直接控制画布(Canvas)和文本样式,实现对文本外观、布局的精细控制。这种能力适用于需要高度定制化文本渲染效果的场景,例如艺术字体、复杂的富文本编排或特殊的动态文字效果。 字体引擎作为图形系统中的核心组件,负…
references/自定义文本绘制与显示(ArkTS).md - 自定义文本绘制与显示(C/C++) — 在复杂的文本排版场景中,当系统提供的标准文本组件无法满足特定的视觉或交互需求时,开发者可以利用ArkGraphics 2D提供的底层文本绘制能力,通过直接控制画布(Canvas)和文本样式,实现对文本外观、布局的精细控制。这种能力适用于需要高度定制化文本渲染效果的场景,例如艺术字体、复杂的富文本编排或特殊的动态文字效果。 字体引擎作为图形系统中的核心组件,负…
references/自定义文本绘制与显示(C_C++).md - 请求UI绘制帧率 — 如果开发者需要以独立的帧率绘制更新操作UI界面时,可以通过DisplaySync来实现。应用中绘制内容的帧率可以使用DisplaySync实例来控制,具体请查阅 @ohos.graphics.displaySync (可变帧率) 。 #### 开发步骤 此处以不同帧率改变文件组件字体大小为例,来模拟不同UI绘制帧率的效果。 1. 导入模块。 import {…
references/请求UI绘制帧率.md - 请求动画绘制帧率 — 在应用开发中, 属性动画 和 显式动画 能够使用可选参数 ExpectedFrameRateRange ,为不同的动画配置不同的期望绘制帧率。 #### 请求属性动画的绘制帧率 定义文本组件的属性动画,请求绘制帧率为60,范例如下: Text('60') // ... .animation({ duration: 1200, iterations: 10, …
references/请求动画绘制帧率.md - 请求自绘制内容绘制帧率 — 对于基于 XComponent 进行Native开发的业务,可以请求独立的绘制帧率进行内容开发,如游戏、自绘制UI框架对接等场景。 #### 接口说明 详细的接口说明请参考 OH_NativeXComponent Native XComponent 。 #### 开发步骤 本范例是通过Drawing在Native侧实现图形的绘制,并将其呈现在NativeWi…
references/请求自绘制内容绘制帧率.md - 过度绘制调试使用指导 — 当应用页面布局的嵌套程度过深时,应用渲染阶段会存在一些组件的绘制指令被其他组件的绘制指令部分或完全覆盖遮挡的情况,造成冗余的CPU、GPU等计算资源的使用。这种一个屏幕上的像素点被重复绘制了多次的情况被称为过度绘制(Overdraw)。开发者可通过系统提供的过度绘制调试指令,查看引起过度绘制的组件位置及其层级,从而减轻应用渲染时的负载。 本文将分别介绍过度绘…
references/过度绘制调试使用指导.md