Matrix2D

Note:

Currently in the beta phase.

A matrix object capable of performing transformations such as scaling, rotation, and translation.

Import Module

import kit.ArkUI.*

class Matrix2D

public class Matrix2D {
    public init(unit!: ?LengthMetricsUnit = None)
}

Description: A 2D transformation matrix supporting rotation, translation, and scaling on both X and Y axes.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

init(?LengthMetricsUnit)

public init(unit!: ?LengthMetricsUnit = None)

Description: Creates a Matrix2D object.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

Parameters:

Parameter Type Required Default Description
unit ?LengthMetricsUnit No None Named parameter. Configures the unit mode of the Matrix2D object. Once configured, it cannot be dynamically changed. Configuration method is the same as CanvasRenderingContext2D.

prop scaleX

public mut prop scaleX: ?Float64

Description: Horizontal scaling factor.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

prop scaleY

public mut prop scaleY: ?Float64

Description: Vertical scaling factor.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

prop rotateX

public mut prop rotateX: ?Float64

Description: Horizontal skew factor.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

prop rotateY

public mut prop rotateY: ?Float64

Description: Vertical skew factor.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

prop translateX

public mut prop translateX: ?Float64

Description: Horizontal translation distance.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

prop translateY

public mut prop translateY: ?Float64

Description: Vertical translation distance. Default unit: vp.

Type: ?Float64

Access: Read-Write

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

func identity()

public func identity(): This

Description: Creates an identity matrix.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

func invert()

public func invert(): This

Description: Returns the inverse matrix of the current matrix.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

func rotate(?Float64, ?Float64, ?Float64)

public func rotate(degree: ?Float64, rx!: ?Float64 = None, ry!: ?Float64 = None): This

Description: Performs right-multiplication rotation operation on the current matrix centered at the rotation point.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

Parameters:

Parameter Type Required Default Description
degree ?Float64 No - Rotation angle in degrees. Positive values indicate clockwise rotation. Convert degrees to radians using degree * Math.PI / 180. Default unit: radians.
rx ?Float64 No None Named parameter. X-coordinate of the rotation point. Default unit: vp.
ry ?Float64 No None Named parameter. Y-coordinate of the rotation point. Default unit: vp.

func translate(?Float64, ?Float64)

public func translate(tx!: ?Float64 = None, ty!: ?Float64 = None): This

Description: Performs left-multiplication translation operation on the current matrix.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

Parameters:

Parameter Type Required Default Description
tx ?Float64 No None Named parameter. Horizontal translation distance. Default unit: vp.
ty ?Float64 No None Named parameter. Vertical translation distance. Default unit: vp.

func scale(?Float64, ?Float64)

public func scale(sx!: ?Float64 = None, sy!: ?Float64 = None): This

Description: Performs right-multiplication scaling operation on the current matrix.

System Capability: SystemCapability.ArkUI.ArkUI.Full

Since: 22

Parameters:

Parameter Type Required Default Description
sx ?Float64 No None Named parameter. Horizontal scaling factor.
sy ?Float64 No None Named parameter. Vertical scaling factor.

Example Code


package ohos_app_cangjie_entry

import kit.ArkUI.*
import ohos.arkui.state_macro_manage.*

@Entry
@Component
class EntryView {
    private let settings: RenderingContextSettings = RenderingContextSettings(antialias: true)
    private let context1: CanvasRenderingContext2D = CanvasRenderingContext2D(this.settings)
    private let matrix: Matrix2D = Matrix2D()

    func build() {
        Row {
            Canvas(this.context1)
                .width(240.vp)
                .height(180.vp)
                .backgroundColor(0xffff00)
                .onReady(
                    {
                        =>
                        this.context1.fillRect(100.0, 20.0, 50.0, 50.0)
                        this.matrix.scaleX = 1.0
                        this.matrix.scaleY = 1.0
                        this.matrix.rotateX = -0.5
                        this.matrix.rotateY = 0.5
                        this.matrix.translateX = 10.0
                        this.matrix.translateY = 10.0
                        this.context1.setTransform(this.matrix)
                        this.context1.fillRect(100.0, 20.0, 50.0, 50.0)
                    }
                )
        }.height(100.percent).width(100.percent)
    }
}

matrix2D_1