HarmonyOS API:画布组件

joytrian
发布于 2023-3-24 18:18
浏览
0收藏

版本:v3.1 Beta

Canvas

更新时间: 2023-02-17 09:19


提供画布组件,用于自定义绘制图形。


说明

该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

不支持。

接口

Canvas(context?: CanvasRenderingContext2D)


参数:


参数名

参数类型

必填

默认值

参数描述

context

​CanvasRenderingContext2D​

-

见CanvasRenderingContext2D对象。

属性

支持通用属性。

事件

除支持通用事件外,还支持如下事件:


名称

参数

描述

onReady(event: () => void)

Canvas组件初始化完成时的事件回调,该事件之后Canvas组件宽高确定且可获取,可使用Canvas相关API进行绘制。

示例:

// xxx.ets
@Entry
@Component
struct CanvasExample {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Canvas(this.context)
        .width('100%')
        .height('100%')
        .backgroundColor('#ffff00')
        .onReady(() => {
          this.context.fillRect(0, 30, 100, 100)
        })
    }
    .width('100%')
    .height('100%')
  }
}

HarmonyOS API:画布组件-鸿蒙开发者社区

CanvasGradient对象

更新时间: 2023-02-17 09:19


渐变对象。


说明

从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

addColorStop

addColorStop(offset: number, color: string): void

设置渐变断点值,包括偏移和颜色。


参数:


参数

类型

必填

默认值

描述

offset

number

0

设置渐变点距离起点的位置占总体长度的比例,范围为0到1。

color

string

'#ffffff'

设置渐变的颜色。

示例:

// xxx.ets
@Entry
@Component
struct Page45 {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)

build() {
  Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    Canvas(this.context)
      .width('100%')
      .height('100%')
      .backgroundColor('#ffff00')
      .onReady(() => {
        var grad = this.context.createLinearGradient(50, 0, 300, 100)
        grad.addColorStop(0.0, 'red')
        grad.addColorStop(0.5, 'white')
        grad.addColorStop(1.0, 'green')
        this.context.fillStyle = grad
        this.context.fillRect(0, 0, 500, 500)
      })
  }
  .width('100%')
  .height('100%')
}
}

HarmonyOS API:画布组件-鸿蒙开发者社区

ImageBitmap对象

更新时间: 2023-02-17 09:19


ImageBitmap对象可以存储canvas渲染的像素数据。


说明

从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

属性

属性

类型

描述

width

number

ImageBitmap的像素宽度。

height

number

ImageBitmap的像素高度。

示例:

// xxx.ets
@Entry
@Component
struct ImageExample {
  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  private img:ImageBitmap = new ImageBitmap("common/images/example.jpg")

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Canvas(this.context)
        .width('100%')
        .height('100%')
        .backgroundColor('#ffff00')
        .onReady(() =>{
          this.context.drawImage( this.img,0,0,500,500,0,0,400,200)
      })
    }
    .width('100%')
    .height('100%')
  }
}

HarmonyOS API:画布组件-鸿蒙开发者社区

方法

close

close()

释放ImageBitmap对象相关联的所有图形资源。该接口为空接口。

ImageData对象

更新时间: 2023-02-17 09:19


ImageData对象可以存储canvas渲染的像素数据。


说明

从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

属性

属性

类型

描述

width

number

矩形区域实际像素宽度,单位为px。

height

number

矩形区域实际像素高度,单位为px。

data

Uint8ClampedArray

一维数组,保存了相应的颜色数据,数据值范围为0到255。

说明

可使用​​px2vp​​接口进行单位转换。

示例:

// xxx.ets
@Entry
@Component
struct Translate {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private img:ImageBitmap = new ImageBitmap("/common/images/1234.png")

build() {
  Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    Canvas(this.context)
      .width('100%')
      .height('100%')
      .backgroundColor('#ffff00')
      .onReady(() =>{
        this.context.drawImage(this.img,0,0,130,130)
        var imagedata = this.context.getImageData(50,50,130,130)
        this.context.putImageData(imagedata,150,150)
      })
  }
  .width('100%')
  .height('100%')
}
}

HarmonyOS API:画布组件-鸿蒙开发者社区


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-components-canvas-canvas-0000001427744852-V3?catalogVersion=V3​

已于2023-3-24 18:18:48修改
收藏
回复
举报
回复
    相关推荐