
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
一张照片不上传服务器,也能在手机上完成柔焦、灰度和反色。本文把这条链路做成一个可运行的滤镜台:先生成一张离线 PixelMap,再用 EffectKit 产生新的 PixelMap,最后在 Canvas 上切换预览。

这次不做孤立的线条示例,直接做一枚能放进真实页面的:天空、山峰、帐篷、营地路线和移动信标全部由 ArkGraphics 2D 绘制;点击主题、拖动线宽、切换线帽/转角,画面会即时重绘;点击“生成成品贴纸”还能把实时画布冻结成一张离屏 PixelMap。上面的 GIF 是 Mate 60 Pro 连续截取的 12 帧真机画面,信标沿路线移动,画面不是预制动画。

这篇直接验证一块 NativeBuffer 是否真的能被 CPU 写入和再次读取:分配 320 × 180 RGBA 缓冲区,Map 后写入固定字节模式,Unmap,再次 Map,最后释放。页面只显示 Native 层返回值和校验和。

NativeImage 是把图像生产端和 OpenGL 纹理连接起来的一座桥。本文做一个最小可运行实验:创建,获取它关联的,再读取 SurfaceId,最后完整销毁资源。

这次实操的结果很明确:NativeVSync 创建、请求和帧率设置都返回 0,真机停止时累计收到 1,401 次回调。我们把每次回调只写入 Native 原子计数,再由 ArkUI 定时读取,做成一个可复用的帧节拍诊断页。

只调用不够,Paragraph 的还必须写入同一个别名。本实验把放在字体链第一位,英文标题即可看到注册字体效果。

中文标题、英文标签、数字、行内图片占位符和长文省略,都放进同一个 Paragraph。下面的 GIF 和截图来自 HUAWEI Mate 60 Pro 真机,页面可以直接切换三种排版场景。

这次做一个能直接看到效果的文字排版工坊:同一块 Canvas 里切换霓虹标题、逐字节奏和测量台。标题会在扫描光束和轨道环之间入场,汉字沿发光波形线跳动,测量台把文字边界框、宽度和 FontMetrics 画出来。下面两段动态 GIF 和静态步骤图均来自已经完成的 Mate 60 Pro 实机操作。

这次实验把Canvas状态栈放进了一个完整使用场景里:真实照片由系统Picker进入应用,三种Path完成模板裁剪,照片层独立执行平移、缩放和旋转,安全区、边框、邮票和装饰各自保存并恢复状态,最后再用离屏Canvas生成冻结成品。真机最终确认:三种模板都能切换,连续变换即时生效,安全区可独立关闭,离屏预览成功生成,返回编辑和复位正常,退出时照片与预览资源释放;整个交互过程中入口和出口深度始终相同。

直接路径使用,由 Animator 和持续刷新;离屏路径使用,把当前路线冻结成快照;暂停、恢复、重置、生成快照、返回实时画布和退出释放都在真机上完成验证;最终干净构建成功,静态回归同时覆盖直接/离屏链路和精细地图图层。本次没有测量 GPU 占用、功耗或真实交通数据,也没有把“请求 30 FPS”写成“稳定达到 30 FPS”。能够确认的是:真机直接画布持续绘制、暂停后状态不变、离屏 PixelMa








