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**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 20 21**系统能力:** SystemCapability.ArkUI.ArkUI.Full 22 23**参数:** 24 25| 参数名 | 类型 | 必填 | 说明 | 26| --------- | -------------- | ------ | ---------- | 27| transform | [Matrix2D](ts-components-canvas-matrix2d.md#Matrix2D) | 否 | 转换矩阵。<br>默认值:null。 | 28 29## 示例 30 31通过setTransform对当前CanvasPattern进行矩阵变换。 32 33```ts 34// xxx.ets 35@Entry 36@Component 37struct CanvasPatternPage { 38 private settings: RenderingContextSettings = new RenderingContextSettings(true) 39 private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 40 private matrix: Matrix2D = new Matrix2D() 41 private img: ImageBitmap = new ImageBitmap("common/pattern.jpg") 42 private pattern: CanvasPattern | null = null 43 44 build() { 45 Column() { 46 Button("Click to set transform") 47 .onClick(() => { 48 this.matrix.scaleY = 1 49 this.matrix.scaleX = 1 50 this.matrix.translateX = 50 51 this.matrix.translateY = 200 52 if (this.pattern) { 53 this.pattern.setTransform(this.matrix) 54 } 55 this.context.fillRect(0, 0, 480, 720) 56 }) 57 .width("45%") 58 .margin("5px") 59 Canvas(this.context) 60 .width('100%') 61 .height('80%') 62 .backgroundColor('#FFFFFF') 63 .onReady(() => { 64 this.pattern = this.context.createPattern(this.img, 'no-repeat') 65 this.matrix.scaleY = 0.5 66 this.matrix.scaleX = 0.5 67 this.matrix.translateX = 50 68 this.matrix.translateY = 50 69 if (this.pattern) { 70 this.context.fillStyle = this.pattern 71 this.pattern.setTransform(this.matrix) 72 } 73 this.context.fillRect(0, 0, 480, 720) 74 }) 75 } 76 .width('100%') 77 .height('100%') 78 } 79} 80``` 81 82 83