当前位置: 首页 > news >正文

鸿蒙中的自定义绘制效果(一)

一、场景

场景说明
ArkUI组件可直接绘制想要的元素或效果,但有局限性
自定义图形有些自定义图形或效果无法用ArkUI组件满足
Drawing实现灵活的自定义绘制效果

Drawing vs ArkUI组件

对比项ArkUI组件Drawing
使用方式直接使用组件需自定义绘制
灵活性有限
上屏显示直接上屏需依靠其他模块显示

二、绘制能力范围及实现流程

ArkGraphics 2D基于2D图像渲染引擎,提供三大核心能力:

能力说明
画布操作裁剪、旋转、缩放等
绘制效果画刷(Brush)、画笔(Pen)实现填充和描边
图元绘制基础图元的绘制(矩形、圆形、路径等)

图形绘制的过程与实际作画的过程相似,主要分为4个步骤:

步骤1:创建画布(必选) ↓ 步骤2:进行画布操作(可选) ↓ 步骤3:设置绘制效果(可选) ↓ 步骤4:绘制图元(必选)

各步骤详解

步骤名称必选说明
1创建画布必选图形绘制的承载,最基本最关键的步骤
2画布操作可选裁剪、旋转、缩放等操作
3绘制效果可选画刷(Brush)填充内部区域,画笔(Pen)描边轮廓
4绘制图元必选绘制基础图元(矩形、圆形、路径等)

说明:不论多么复杂的图形,都是基础图元的不同组合。

三、显示绘制结果

基于画布完成绘制后,还需要将绘制结果上屏显示才能完整实现屏幕上可见的图形UI内容。

两种显示方式

方式语言说明
RenderNodeArkTS通过RenderNode获取Canvas,绘制结果由RenderNode上屏显示
XComponentC/C++创建Canvas绘制,将结果拷贝到buffer,由XComponent上屏显示

四、与Canvas画布组件的关系

Canvas组件也具有自绘制的能力,目前有两套API:

API说明
CanvasRenderingContext2D按照W3C标准封装,可快速复用Web应用绘制逻辑
OffscreenCanvasRenderingContext2D离屏Canvas绘制
DrawingRenderingContext另一套绘制API

两套API的适用场景

API适用场景
CanvasRenderingContext2DWeb应用和游戏、快速原型设计、数据可视化、在线绘图板、教学工具、创意应用等
Native Drawing专业图形处理软件、桌面或移动应用等对性能要求较高的场景

性能对比

对比项Canvas组件Native Drawing Canvas
绘制能力本质相同本质相同
性能可能存在卡顿、掉帧性能更优
硬件接近性较低更高
适用场景通用场景高性能、复杂绘制场景

说明:Canvas组件的底层也使用了Native Drawing接口来实现绘制功能,在绘制能力上两者没有本质的区别。但因为多层封装的实现过程,使得Canvas组件在硬件接近性方面不如Native Drawing Canvas。

五、其他

限制项说明
单位图形绘制过程中,使用的单位为像素(px)

鸿蒙图形绘制通过ArkGraphics 2D提供画布操作、绘制效果、图元绘制三大能力,流程为创建画布→画布操作→设置绘制效果→绘制图元,绘制结果可通过RenderNode(ArkTS)或XComponent(C/C++)上屏显示,Canvas组件底层使用Native Drawing但多层封装可能影响性能,高性能场景推荐直接使用Native Drawing Canvas。

http://www.jsqmd.com/news/649022/

相关文章:

  • 《信息系统项目管理师教程(第4版)》——成本管理vs采购管理
  • 免费解决机械键盘连击问题:三步告别重复输入的终极指南 [特殊字符]
  • Chrome浏览器Skills功能上线:一键转化优质AI提示,简化AI驱动浏览体验
  • Retinaface+CurricularFace镜像在智慧通行场景中的应用与部署
  • 微信小游戏避坑指南:开放数据域动态渲染数据,多一步编译就搞定?
  • Gemma 3-12b-it多模态能力展示:同一模型完成图像问答+文本摘要+逻辑推理
  • MySQL主从复制环境下表删除报错_配置同步过滤避免操作传递
  • using webpack5
  • 北京回收名家字画、古籍线装书优选京城信德斋 靠谱机构护航藏家权益 - 品牌排行榜单
  • 华硕笔记本性能优化神器:G-Helper完整使用指南与深度解析
  • 限时公开8款AI论文神器,30分钟生成2.5万字,免费降AIGC率! - 麟书学长
  • 终极Dell G15散热控制指南:如何彻底告别游戏本过热问题
  • 炉石传说HsMod终极指南:55项功能完整教程与快速上手攻略
  • 3个关键步骤解决游戏串流难题:Sunshine新手配置完全指南
  • 2026新民市优质月子餐公司口碑推荐榜 - 品牌排行榜
  • AI编程新范式:使用CosyVoice为代码生成语音注释与讲解
  • 从TSDK到温度矩阵:大疆热红外图像解析实战
  • Go语言的sync.Map中的实现结构
  • JD_AutoComment图片审核优化:从技术债务到企业级解决方案
  • 2026年大东区比较好的独栋月子会所品牌推荐榜 - 品牌排行榜
  • Phi-4-mini-reasoning与SolidWorks集成:工程计算自动化
  • 上海海关资质代办企业有哪些 2026年合规服务机构盘点 - 品牌排行榜
  • NS-USBLoader终极指南:从零开始的Nintendo Switch游戏管理完整教程
  • 烟花从业者必看|到浏阳大瑶最全路线
  • Blender 3MF插件:实现3D打印工作流的终极解决方案
  • 基于Qt6.4的PDF阅读器开发:实现高效章节目录与预览图功能
  • PotPlayer 字幕实时翻译架构解析:基于百度翻译API的高性能解决方案
  • 2026皇姑区比较好的独栋月子会所品牌排行 - 品牌排行榜
  • 大麦网抢票自动化:Python脚本帮你轻松购票
  • 告别手动操作:用Excel VBA批量插入100+文件只需3步