ITPub博客

首页 > 架构设计 > 操作系统 > 书写不再“断片”!Pen Kit报点预测丝滑如真笔

书写不再“断片”!Pen Kit报点预测丝滑如真笔

原创 操作系统 作者:HarmonyOS SDK 时间:2025-08-30 11:37:35 0 删除 编辑

传统手写场景中,用户常因笔尖滞后、轨迹抖动等问题导致书写体验割裂,而开发者则面临跨设备适配复杂、算法优化成本高等痛点。

HarmonyOS SDK 手写笔服务(Pen Kit)提供 报点预测能力,根据书写轨迹预测报点提前进行绘制,提高手写跟手性,手写套件已默认开启报点预测,您也可以在应用中单独集成报点预测功能。

在应用的自定义界面中,获取到界面的触摸事件,通过调用报点预测的接口,可以得到预测的下一个报点的位置信息。

应用场景

教育创作:提升涂鸦场景的跟手性。

开发步骤



1.导入相关模块。

import { PointPredictor } from '@kit.Penkit';


2.获取当前界面的触摸事件信息,调用接口计算预测点信息。

    @Entry
    @Component
    struct PointPredictorDemo {
      @State actualXCoordinate: number = 0
      @State actualYCoordinate: number = 0
      @State predictorXCoordinate: Dimension = 0
      @State predictorYCoordinate: Dimension = 0
      pointPredictor: PointPredictor = new PointPredictor();
      aboutToAppear() {
        console.info('getPredictionPoint aboutToAppear')
      }
      aboutToDisappear() {
        console.info('getPredictionPoint aboutToDisappear')
      }
      build() {
        Stack({ alignContent: Alignment.TopEnd }) {
          this.Canvas() // Canvas.
        }.height('100%').width('100%')
      }
      // 画布
      @Builder
      Canvas() {
        Column() {
          Text("实际点坐标: X: " + this.actualXCoordinate + " Y: " + this.actualYCoordinate).textAlign(TextAlign.Start)
          Text("预测点坐标: X: " + this.predictorXCoordinate + " Y: " + this.predictorYCoordinate)
            .textAlign(TextAlign.Start)
        }.position({ x: 0, y: 0 })
        .alignItems(HorizontalAlign.Start)
        Stack()
          .width('100%')
          .height('100%')
          .onTouch((event: TouchEvent) => {
            switch (event.type) {
              case TouchType.Down: // Create a drawing path when the screen is touched.
                break;
              case TouchType.Move: // Use the prediction algorithm to perform prediction and obtain the prediction point.
                let point = this.pointPredictor?.getPredictionPoint(event)
                this.actualXCoordinate = event.touches[0]?.x
                this.actualYCoordinate = event.touches[0]?.y
                this.predictorXCoordinate = point?.x
                this.predictorYCoordinate = point?.y
                console.info("pointPredictor 实际点坐标 x:" + event.touches[0]?.x + " y:" + event.touches[0]?.y)
                console.info("pointPredictor 预测点坐标 x:" + point?.x + "  y:" + point?.y)
                break;
              case TouchType.Up:
                break;
            }
          })
      }
    }

了解更多详情>>

访问 手写笔服务官网

获取 报点预测开发指导文档


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70003787/viewspace-3094583/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
HarmonyOS SDK技术团队。分享最新的技术干货,带来最全的能力应用场景,更新热门开发者圈子活动。与开发者一起,同成长,共精彩。

注册时间:2021-07-15

  • 博文量
    627
  • 访问量
    729740