OpenHarmony开发者论坛

标题: 应用开发-手写板 [打印本页]

作者: 海浪漂啊漂    时间: 2024-1-14 12:09
标题: 应用开发-手写板
这是一个基于ArkUI开发的手写板应用,只需几十行简洁的代码,即可轻松实现以下手写功能和清空画布的操作

一、效果图:
(, 下载次数: 0)
二、代码
  1. @Entry
  2. @Component
  3. struct Index {
  4.   //手写路径
  5.   @State pathCommands: string = '';

  6.   build() {
  7.     Column() {
  8.       //清空画布按钮
  9.       Button("清空")
  10.         .onClick(() => {
  11.           //将路径置空
  12.           this.pathCommands = '';
  13.         })
  14.       Flex() {
  15.         //如果路径不为空,那么展示path路径,
  16.         // stokeWidth(5)表示画笔宽度为5,
  17.         // fill('none')表示填充为空白,
  18.         // stroke(Color.Blue)表示画笔为蓝色
  19.         if (this.pathCommands != '') {
  20.           Path().commands(this.pathCommands).strokeWidth(5).fill('none').stroke(Color.Blue)
  21.         }
  22.       }.onTouch((event: TouchEvent) => {
  23.         //响应手势触摸操作
  24.         this.onTouchEvent(event)
  25.       }).width('100%').height('100%')
  26.     }
  27.   }

  28.   onTouchEvent(event: TouchEvent) {
  29.     //手指按下和移动时的位置转换成像素位置
  30.     let x = vp2px(event.touches[0].x);
  31.     let y = vp2px(event.touches[0].y);
  32.     switch (event.type) {
  33.       
  34.       //手指按下
  35.       case TouchType.Down:
  36.       //绘制点移动到(x,y)位置
  37.         this.pathCommands += 'M' + x + ' ' + y;
  38.         break;
  39.             
  40.       //当前位置画线到(x,y)位置
  41.       case TouchType.Move:
  42.         this.pathCommands += 'L' + x + ' ' + y;
  43.         break;
  44.       default:
  45.         break;
  46.     }
  47.   }
  48. }
复制代码
在这个代码中,我们构建了一个手势绘图应用。以下是关键部分的解释:






欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5