Auto Shape:一笔绘制图形
适用于 Whiteboard HarmonyOS SDK 0.2.11,内嵌 Appliance Plugin 1.1.45。本章的 Version 条件指插件版本。
Auto Shape:一笔绘制图形
Auto Shape(Version ≥1.1.33)在用户用铅笔完成一笔绘制后,识别并整理为对应图形。支持直线、箭头、矩形、椭圆或圆形,以及三角形、菱形和五角星。
闭合图形尽量一笔闭合。识别针对当前完成的一笔,不会批量转换历史笔迹。
Native HarmonyOS 开启方式
先按教具插件介绍开启 useMultiViews 和 enableAppliancePlugin,加入可写房间,在插件初始化完成后设置教具状态。
0.2.11 的 SDK MemberState 没有内置 autoShape 字段。应用可定义扩展 MemberState 的业务接口,声明插件接受的 autoShape 布尔值和 strokeType,通过公开的 controller.setMemberState(...) 提交。
将下面的业务接口与函数保存在应用的 .ets 文件中。AutoShapeMemberState 与 enableAutoShape/disableAutoShape 都由应用定义:
import { Appliance, MemberState, WhiteboardController } from '@shengwang/whiteboard';
interface AutoShapeMemberState extends MemberState {
autoShape: boolean;
strokeType?: string;
}
export function enableAutoShape(controller: WhiteboardController): void {
const state: AutoShapeMemberState = {
currentApplianceName: Appliance.PENCIL,
strokeType: 'Normal',
strokeColor: [32, 102, 255],
strokeWidth: 4,
autoShape: true
};
controller.setMemberState(state);
}
export function disableAutoShape(controller: WhiteboardController): void {
const state: AutoShapeMemberState = { autoShape: false };
controller.setMemberState(state);
}
入房成功、插件就绪后调用 enableAutoShape(controller),再在 HarmonyOS 白板组件中使用铅笔绘制。函数将铅笔线型设为插件接受的 Normal 实线,并提交 autoShape=true。
SDK 会将整个状态对象序列化给内嵌白板运行时,业务接口的扩展字段也进入请求。使用的是公开 Native 方法,应用无需安装 Web 插件包。
关闭与状态记录
调用 disableAutoShape(controller) 显式提交 autoShape=false。只提交不含该字段的普通 MemberState 不会自动清除此前开关。
SDK 的基础 MemberState 类型没有该字段,业务工具栏自行记录开关状态。扩展属性名需保持为 autoShape 和 strokeType;启用字段混淆时,保留这两个与运行时约定的名称。
这是业务模型扩展方式,使用 SDK 现有 Native 方法。开启后可在 HarmonyOS 白板组件中书写并确认识别效果。