HarmonyOS应用开发-手写板

        这是一个基于HarmonyOS做的一个手写板应用,只需要简单的几十行代码,就可以实现如下手写功能以及清空画布功能。

一、先上效果图:

二、上代码

@Entry
@Component
struct Index {
  //手写路径
  @State pathCommands: string = '';

  build() {
    Column() {
      //清空画布按钮
      Button("清空")
        .onClick(() => {
          //将路径置空
          this.pathCommands = '';
        })
      Flex() {
        //如果路径不为空,那么展示path路径,
        // stokeWidth(5)表示画笔宽度为5,
        // fill('none')表示填充为空白,
        // stroke(Color.Blue)表示画笔为蓝色
        if (this.pathCommands != '') {
          Path().commands(this.pathCommands).strokeWidth(5).fill('none').stroke(Color.Blue)
        }
      }.onTouch((event: TouchEvent) => {
        //响应手势触摸操作
        this.onTouchEvent(event)
      }).width('100%').height('100%')
    }
  }

  onTouchEvent(event: TouchEvent) {
    //手指按下和移动时的位置转换成像素位置
    let x = vp2px(event.touches[0].x);
    let y = vp2px(event.touches[0].y);
    switch (event.type) {
      
      //手指按下
      case TouchType.Down:
      //眺到(x,y)点
        this.pathCommands += 'M' + x + ' ' + y;
        break;
            
      //画线到(x,y)点
      case TouchType.Move:
        this.pathCommands += 'L' + x + ' ' + y;
        break;
      default:
        break;
    }
  }
}

在这个代码中,我们构建了一个手势绘图应用。以下是关键部分的解释:

  1. @Entry和@Component注解: 这两个注解用于标识这个类是一个入口点并且是一个组件。在HarmonyOS中,这是定义页面的标准方式。

  2. @State注解: 在HarmonyOS中,@State注解同样用于声明状态。在这里,我们声明了一个字符串类型的pathCommands,用于存储手势绘制的路径。

  3. build()函数:这个函数定义了HarmonyOS页面的结构,包括清空按钮和用于展示绘图路径的组件。

  4. onTouchEvent函数: 这个函数处理触摸事件,根据手指按下和移动的位置,将相应的绘制命令添加到路径中,实现了手势绘制的功能。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 15:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 15:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 15:30:03       82 阅读
  4. Python语言-面向对象

    2023-12-16 15:30:03       91 阅读

热门阅读

  1. 我为什么要当程序员?

    2023-12-16 15:30:03       68 阅读
  2. KafKa基本原理

    2023-12-16 15:30:03       54 阅读
  3. 叁[3],函数DispImage/DispObj

    2023-12-16 15:30:03       54 阅读
  4. 【视点合成】代码解读:生成demo视频

    2023-12-16 15:30:03       52 阅读
  5. 【贪心】LeetCode-406. 根据身高重建队列

    2023-12-16 15:30:03       54 阅读
  6. windows安装protoc-gen-go

    2023-12-16 15:30:03       66 阅读
  7. android studio 编译老项目失败问题处理

    2023-12-16 15:30:03       63 阅读