【SUBJECT技术】(MSDP)Rosen图层绘制的应用

一、图层绘制的若干细节

本文结合实例说明 Rosen 图层绘制的若干细节,以点带面,若全面了解需要深入阅读 MSDP 和 Graphic2D 子系统相关代码。

1.1. 绘制动画的数据来源

由 ARKUI 调用 MSDP 的 StartDrag()接口将 DragData 数据信息初始化到 DrawingInfo 全局变量。

1.2. 从设备 DPI 转换图片偏移位置

获取设备的 dpi,通过 deviceDpi 计算出缩放因子 scalingValue
int32_t deviceDpi = display->GetDpi();

将 pixelMap 的 Width 和 Height,通过 scalingValue,裁剪尺寸。
scalingValue=(1.0*deviceDpi*DEVICE_INDEPENDENT_PIXEL / BASELINE_DENSITY) / SVG_ORIGINAL_SIZE;

竖直方向增加一个 adjustSize 偏移量

adjustSize = TWELVE_SIZE * GetScaling();
SetBounds(DEFAULT_POSITION_X,adjustSize,pixelMap->GetWidth(),pixelMap->GetHeight());
SetFrame(DEFAULT_POSITION_X,adjustSize,pixelMap->GetWidth(),pixelMap->GetHeight());

1.3 图层与绘制节点

1.3.1. 绘制多图层的基本步骤

  1. 创建窗口节点 surfaceNode,设置背景颜色、大小、是否可见等信息;
  2. 创建根节点 rootNode,设置边框长宽大小、背景颜色等信息;
  3. 初始化画布;
  4. 再分别创建 nodes、filterNode、pixelMapNode、dragStyleNode、mouseIconNode 节点,设置相对应的节点参数信息。

1.3.2. nodes 节点存放节点信息

各节点 对应的下标常量 描述
Rosen::RSCanvasNode filterNode
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值