• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# CanvasPattern
2
3一个Object对象,使用[createPattern](ts-canvasrenderingcontext2d.md#createpattern)方法创建,通过指定图像和重复方式创建图片填充的模板。
4
5>  **说明:**
6>
7>  从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 方法
10
11### setTransform
12
13setTransform(transform?: Matrix2D): void
14
15使用Matrix2D对象作为参数、对当前CanvasPattern进行矩阵变换。
16
17从API version 9开始,该接口支持在ArkTS卡片中使用。
18
19**参数:**
20
21| 参数      | 类型                                                  | 必填 | 默认值 | 描述       |
22| --------- | ----------------------------------------------------- | ---- | ------ | ---------- |
23| transform | [Matrix2D](ts-components-canvas-matrix2d.md#Matrix2D) | 否   | null   | 转换矩阵。 |
24
25**示例:**
26
27```ts
28// xxx.ets
29@Entry
30@Component
31struct CanvasPatternPage {
32  private settings: RenderingContextSettings = new RenderingContextSettings(true)
33  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
34  private matrix: Matrix2D = new Matrix2D()
35  private img: ImageBitmap = new ImageBitmap("common/pattern.jpg")
36  private pattern : CanvasPattern | null = null
37
38  build() {
39      Column() {
40        Button("Click to set transform")
41          .onClick(() => {
42            this.matrix.scaleY = 1
43            this.matrix.scaleX = 1
44            this.matrix.translateX = 50
45            this.matrix.translateY = 200
46            if (this.pattern) {
47              this.pattern.setTransform(this.matrix)
48            }
49            this.context.fillRect(0, 0, 480, 720)
50          })
51          .width("45%")
52          .margin("5px")
53        Canvas(this.context)
54          .width('100%')
55          .height('80%')
56          .backgroundColor('#FFFFFF')
57          .onReady(() => {
58            this.pattern = this.context.createPattern(this.img, 'no-repeat')
59            this.matrix.scaleY = 0.5
60            this.matrix.scaleX = 0.5
61            this.matrix.translateX = 50
62            this.matrix.translateY = 50
63            if (this.pattern) {
64              this.context.fillStyle = this.pattern
65              this.pattern.setTransform(this.matrix)
66            }
67            this.context.fillRect(0, 0, 480, 720)
68          })
69      }
70      .width('100%')
71      .height('100%')
72  }
73}
74```
75
76![CanvasPattern](./figures/canvas_pattern.gif)
77
78