diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194352434.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194352434.png
index b2728fd1b4e050edddf499398b44a7e3aa634109..f1b942fee8437b1197ef3e9f40c98187a76f8c44 100644
Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194352434.png and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194352434.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001238712439.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001238712439.png
index b2728fd1b4e050edddf499398b44a7e3aa634109..f1b942fee8437b1197ef3e9f40c98187a76f8c44 100644
Binary files a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001238712439.png and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001238712439.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777771.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777771.png
new file mode 100644
index 0000000000000000000000000000000000000000..06cbacf1470de12c79c2020aa8c6be95506e58b5
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777771.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777772.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777772.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c68b723dd3966886d384028663d4a7d6633c027
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777772.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777773.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777773.png
new file mode 100644
index 0000000000000000000000000000000000000000..7dbcbb2d5710b17866b9d5b034437b91a700a3f9
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777773.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777774.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777774.png
new file mode 100644
index 0000000000000000000000000000000000000000..60f430b646b45a3e3b16a9bb024e4a14e48bf4d3
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777774.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777775.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777775.png
new file mode 100644
index 0000000000000000000000000000000000000000..60f430b646b45a3e3b16a9bb024e4a14e48bf4d3
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777775.png differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md
index 08db299f856f4fdae23a238e0bc16c6c6bfcdee4..152ff182e77fc382f99a785de5ad2aa95194deb9 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-canvasrenderingcontext2d.md
@@ -1,8 +1,7 @@
# CanvasRenderingContext2D对象
-> **说明:**
->
-> 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
+> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+> 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
使用RenderingContext在Canvas组件上进行绘制,绘制对象可以是矩形、文本、图片等。
@@ -12,51 +11,50 @@
CanvasRenderingContext2D(setting: RenderingContextSetting)
-**参数:**
+**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
-| ------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
-| setting | [RenderingContextSettings](#renderingcontextsettings) | 是 | - | 见[RenderingContextSettings](#renderingcontextsettings)。 |
+ | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+ | ------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
+ | setting | [RenderingContextSettings](#renderingcontextsettings) | 是 | - | 见[RenderingContextSettings](#renderingcontextsettings)。 |
### RenderingContextSettings
-RenderingContextSettings(antialias?: bool)
+RenderingContextSettings(antialias?: boolean)
用来配置CanvasRenderingContext2D对象的参数,包括是否开启抗锯齿。
-**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
-| --------- | ---- | ---- | ----- | ---------------- |
-| antialias | bool | 否 | false | 表明canvas是否开启抗锯齿。 |
+**参数:**
+
+ | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+ | --------- | ------- | ---- | ----- | ---------------- |
+ | antialias | boolean | 否 | false | 表明canvas是否开启抗锯齿。 |
## 属性
-| 名称 | 类型 | 默认值 | 描述 |
-| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
-| [fillStyle](#fillstyle) | <color> \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | - | 指定绘制的填充色。
- 类型为<color>时,表示设置填充区域的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
-| [lineWidth](#linewidth) | number | - | 设置绘制线条的宽度。 |
-| [strokeStyle](#strokestyle) | <color> \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | - | 设置描边的颜色。
- 类型为<color>时,表示设置描边使用的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
-| [lineCap](#linecap) | string | 'butt' | 指定线端点的样式,可选值为:
- 'butt':线端点以方形结束。
- 'round':线端点以圆形结束。
- 'square':线端点以方形结束,该样式下会增加一个长度和线段厚度相同,宽度是线段厚度一半的矩形。 |
-| [lineJoin](#linejoin) | string | 'miter' | 指定线段间相交的交点样式,可选值为:
- 'round':在线段相连处绘制一个扇形,扇形的圆角半径是线段的宽度。
- 'bevel':在线段相连处使用三角形为底填充, 每个部分矩形拐角独立。
- 'miter':在相连部分的外边缘处进行延伸,使其相交于一点,形成一个菱形区域,该属性可以通过设置miterLimit属性展现效果。 |
-| [miterLimit](#miterlimit) | number | 10 | 设置斜接面限制值,该值指定了线条相交处内角和外角的距离。 |
-| [font](#font) | string | 'normal normal 14px sans-serif' | 设置文本绘制中的字体样式。
语法:ctx.font='font-size font-family'
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列。
语法:ctx.font='font-style font-weight font-size font-family'
- font-style(可选),用于指定字体样式,支持如下几种样式:'normal',talic。
- font-weight(可选),用于指定字体的粗细,支持如下几种类型:'normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900。
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列,支持如下几种类型:'sans-serif', 'serif', 'monospace'。 |
-| [textAlign](#textalign) | string | 'left' | 设置文本绘制中的文本对齐方式,可选值为:
- 'left':文本左对齐。
- 'right':文本右对齐。
- 'center':文本居中对齐。
- 'start':文本对齐界线开始的地方。
- 'end':文本对齐界线结束的地方。
> **说明:**
> ltr布局模式下'start'和'left'一致,rtl布局模式下'start'和'right'一致·。 |
-| [textBaseline](#textbaseline) | string | 'alphabetic' | 设置文本绘制中的水平对齐方式,可选值为:
- 'alphabetic':文本基线是标准的字母基线。
- 'top':文本基线在文本块的顶部。
- 'hanging':文本基线是悬挂基线。
- 'middle':文本基线在文本块的中间。
- 'ideographic':文字基线是表意字基线;如果字符本身超出了alphabetic基线,那么ideograhpic基线位置在字符本身的底部。
- 'bottom':文本基线在文本块的底部。 与ideographic基线的区别在于ideographic基线不需要考虑下行字母。 |
-| [globalAlpha](#globalalpha) | number | - | 设置透明度,0.0为完全透明,1.0为完全不透明。 |
-| [lineDashOffset](#linedashoffset) | number | 0.0 | 设置画布的虚线偏移量,精度为float。 |
-| [globalCompositeOperation](#globalcompositeoperation) | string | 'source-over' | 设置合成操作的方式。类型字段可选值有'source-over','source-atop','source-in','source-out','destination-over','destination-atop','destination-in','destination-out','lighter','copy','xor'。 |
-| [shadowBlur](#shadowblur) | number | 0.0 | 设置绘制阴影时的模糊级别,值越大越模糊,精度为float。 |
-| [shadowColor](#shadowcolor) | <color> | - | 设置绘制阴影时的阴影颜色。 |
-| [shadowOffsetX](#shadowoffsetx) | number | - | 设置绘制阴影时和原有对象的水平偏移值。 |
-| [shadowOffsetY](#shadowoffsety) | number | - | 设置绘制阴影时和原有对象的垂直偏移值。 |
-| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | true | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。 |
-| imageSmoothingQuality | string | 'low' | 用于设置图像平滑度,支持如下三种类型:'low', 'medium', 'high'。 |
-
-> **说明:**
->
-> <color>类型格式为 'rgb(255, 255, 255)','rgba(255, 255, 255, 1.0)','\#FFFFFF'。
+| 名称 | 类型 | 描述 |
+| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
+| [fillStyle](#fillstyle) | string \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | 指定绘制的填充色。
- 类型为string时,表示设置填充区域的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
+| [lineWidth](#linewidth) | number | 设置绘制线条的宽度。 |
+| [strokeStyle](#strokestyle) | string \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | 设置描边的颜色。
- 类型为string时,表示设置描边使用的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
+| [lineCap](#linecap) | CanvasLineCap | 指定线端点的样式,可选值为:
- 'butt':线端点以方形结束。
- 'round':线端点以圆形结束。
- 'square':线端点以方形结束,该样式下会增加一个长度和线段厚度相同,宽度是线段厚度一半的矩形。
默认值:'butt'。 |
+| [lineJoin](#linejoin) | CanvasLineJoin | 指定线段间相交的交点样式,可选值为:
- 'round':在线段相连处绘制一个扇形,扇形的圆角半径是线段的宽度。
- 'bevel':在线段相连处使用三角形为底填充, 每个部分矩形拐角独立。
- 'miter':在相连部分的外边缘处进行延伸,使其相交于一点,形成一个菱形区域,该属性可以通过设置miterLimit属性展现效果。
默认值:'miter'。 |
+| [miterLimit](#miterlimit) | number | 设置斜接面限制值,该值指定了线条相交处内角和外角的距离。
默认值:10。 |
+| [font](#font) | string | 设置文本绘制中的字体样式。
语法:ctx.font='font-size font-family'
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列。
语法:ctx.font='font-style font-weight font-size font-family'
- font-style(可选),用于指定字体样式,支持如下几种样式:'normal','italic'。
- font-weight(可选),用于指定字体的粗细,支持如下几种类型:'normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900。
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列,支持如下几种类型:'sans-serif', 'serif', 'monospace'。
默认值:'normal normal 14px sans-serif'。 |
+| [textAlign](#textalign) | CanvasTextAlign | 设置文本绘制中的文本对齐方式,可选值为:
- 'left':文本左对齐。
- 'right':文本右对齐。
- 'center':文本居中对齐。
- 'start':文本对齐界线开始的地方。
- 'end':文本对齐界线结束的地方。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> ltr布局模式下'start'和'left'一致,rtl布局模式下'start'和'right'一致·。
默认值:'left'。 |
+| [textBaseline](#textbaseline) | CanvasTextBaseline | 设置文本绘制中的水平对齐方式,可选值为:
- 'alphabetic':文本基线是标准的字母基线。
- 'top':文本基线在文本块的顶部。
- 'hanging':文本基线是悬挂基线。
- 'middle':文本基线在文本块的中间。
- 'ideographic':文字基线是表意字基线;如果字符本身超出了alphabetic基线,那么ideograhpic基线位置在字符本身的底部。
- 'bottom':文本基线在文本块的底部。 与ideographic基线的区别在于ideographic基线不需要考虑下行字母。
默认值:'alphabetic'。 |
+| [globalAlpha](#globalalpha) | number | 设置透明度,0.0为完全透明,1.0为完全不透明。 |
+| [lineDashOffset](#linedashoffset) | number | 设置画布的虚线偏移量,精度为float。
默认值:0.0。 |
+| [globalCompositeOperation](#globalcompositeoperation) | string | 设置合成操作的方式。类型字段可选值有'source-over','source-atop','source-in','source-out','destination-over','destination-atop','destination-in','destination-out','lighter','copy','xor'。
默认值:'source-over'。 |
+| [shadowBlur](#shadowblur) | number | 设置绘制阴影时的模糊级别,值越大越模糊,精度为float。
默认值:0.0。 |
+| [shadowColor](#shadowcolor) | string | 设置绘制阴影时的阴影颜色。 |
+| [shadowOffsetX](#shadowoffsetx) | number | 设置绘制阴影时和原有对象的水平偏移值。 |
+| [shadowOffsetY](#shadowoffsety) | number | 设置绘制阴影时和原有对象的垂直偏移值。 |
+| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。
默认值:true。 |
+
+> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+>fillStyle、shadowColor与 strokeStyle 中string类型格式为 'rgb(255, 255, 255)','rgba(255, 255, 255, 1.0)','\#FFFFFF'。
### fillStyle
@@ -427,6 +425,7 @@ struct LineDashOffset {
.onReady(() =>{
this.context.arc(100, 75, 50, 0, 6.28)
this.context.setLineDash([10,20])
+ this.context.lineDashOffset = 10.0;
this.context.stroke();
})
}
@@ -597,6 +596,7 @@ struct ShadowOffsetX {
struct ShadowOffsetY {
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)
@@ -660,16 +660,19 @@ fillRect(x: number, y: number, w: number, h: number): void
填充一个矩形。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ------ | ------ | ---- | ---- | ------------- |
-| x | number | 是 | 0 | 指定矩形左上角点的x坐标。 |
-| y | number | 是 | 0 | 指定矩形左上角点的y坐标。 |
-| width | number | 是 | 0 | 指定矩形的宽度。 |
-| height | number | 是 | 0 | 指定矩形的高度。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | x | number | 是 | 0 | 指定矩形左上角点的x坐标。 |
+ | y | number | 是 | 0 | 指定矩形左上角点的y坐标。 |
+ | width | number | 是 | 0 | 指定矩形的宽度。 |
+ | height | number | 是 | 0 | 指定矩形的高度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct FillRect {
@@ -701,21 +704,25 @@ strokeRect(x: number, y: number, w: number, h: number): void
绘制具有边框的矩形,矩形内部不填充。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ------ | ------ | ---- | ---- | ------------ |
-| x | number | 是 | 0 | 指定矩形的左上角x坐标。 |
-| y | number | 是 | 0 | 指定矩形的左上角y坐标。 |
-| width | number | 是 | 0 | 指定矩形的宽度。 |
-| height | number | 是 | 0 | 指定矩形的高度。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ------ | ------ | ---- | ---- | ------------ |
+ | x | number | 是 | 0 | 指定矩形的左上角x坐标。 |
+ | y | number | 是 | 0 | 指定矩形的左上角y坐标。 |
+ | w | number | 是 | 0 | 指定矩形的宽度。 |
+ | h | number | 是 | 0 | 指定矩形的高度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct StrokeRect {
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)
@@ -741,21 +748,25 @@ clearRect(x: number, y: number, w: number, h: number): void
删除指定区域内的绘制内容。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------ | ------ | ---- | ---- | ------------- |
-| x | number | 是 | 0 | 指定矩形上的左上角x坐标。 |
-| y | number | 是 | 0 | 指定矩形上的左上角y坐标。 |
-| width | number | 是 | 0 | 指定矩形的宽度。 |
-| height | number | 是 | 0 | 指定矩形的高度。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | x | number | 是 | 0 | 指定矩形上的左上角x坐标。 |
+ | y | number | 是 | 0 | 指定矩形上的左上角y坐标。 |
+ | w | number | 是 | 0 | 指定矩形的宽度。 |
+ | h | number | 是 | 0 | 指定矩形的高度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ClearRect {
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)
@@ -779,24 +790,29 @@ clearRect(x: number, y: number, w: number, h: number): void
### fillText
-fillText(text: string, x: number, y: number): void
+fillText(text: string, x: number, y: number, maxWidth?: number): void
绘制填充类文本。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ---- | ------ | ---- | ---- | --------------- |
-| text | string | 是 | “” | 需要绘制的文本内容。 |
-| x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
-| y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ---- | ------ | ---- | ---- | --------------- |
+ | text | string | 是 | “” | 需要绘制的文本内容。 |
+ | x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
+ | y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+ | maxWidth | number | 否 | - | 指定文本允许的最大宽度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct FillText {
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)
@@ -819,24 +835,29 @@ fillText(text: string, x: number, y: number): void
### strokeText
-strokeText(text: string, x: number, y: number): void
+strokeText(text: string, x: number, y: number, maxWidth?:number): void
绘制描边类文本。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | --------------- |
-| text | string | 是 | “” | 需要绘制的文本内容。 |
-| x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
-| y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | --------------- |
+ | text | string | 是 | “” | 需要绘制的文本内容。 |
+ | x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
+ | y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+ | maxWidth | number | 否 | - | 需要绘制的文本的最大宽度 。|
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct StrokeText {
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)
@@ -863,28 +884,49 @@ measureText(text: string): TextMetrics
该方法返回一个文本测算的对象,通过该对象可以获取指定文本的宽度值。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ---- | ------ | ---- | ---- | ---------- |
-| text | string | 是 | "" | 需要进行测量的文本。 |
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ---- | ------ | ---- | ---- | ---------- |
+ | text | string | 是 | "" | 需要进行测量的文本。 |
+
+**返回值:**
-- 返回值
| 类型 | 说明 |
| ----------- | ------- |
| TextMetrics | 文本的尺寸信息 |
-- TextMetrics类型描述
- | 属性 | 类型 | 描述 |
- | ----- | ------ | ------- |
- | width | number | 字符串的宽度。 |
+**TextMetrics类型描述:**
+
+ | 属性 | 类型 | 描述 |
+ | ----- | ------ | ------- |
+ | width | number | 字符串的宽度。 |
+ | height | number | 字符串的高度。 |
+ | actualBoundingBoxAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的矩形边界顶部的距离,当前值为0。 |
+ | actualBoundingBoxDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的矩形边界底部的距离,当前值为0。 |
+ | actualBoundingBoxLeft | number | 平行于基线,从CanvasRenderingContext2D.textAlign 属性确定的对齐点到文本矩形边界左侧的距离,当前值为0。 |
+ | actualBoundingBoxRight | number | 平行于基线,从CanvasRenderingContext2D.textAlign 属性确定的对齐点到文本矩形边界右侧的距离,当前值为0。|
+ | alphabeticBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 alphabetic 基线的距离,当前值为0。|
+ | emHeightAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框中 em 方块顶部的距离,当前值为0。|
+ | emHeightDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框中 em 方块底部的距离,当前值为0。|
+ | fontBoundingBoxAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的所有字体的矩形最高边界顶部的距离,当前值为0。|
+ | fontBoundingBoxDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的所有字体的矩形边界最底部的距离,当前值为0。|
+ | hangingBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 hanging 基线的距离,当前值为0。|
+ | ideographicBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 ideographic 基线的距离,当前值为0。|
-**示例:**
- ```
+
+
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct MeasureText {
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)
@@ -912,19 +954,22 @@ stroke(path?: Path2D): void
进行边框绘制操作。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ---------------------------------------- | ---- | ---- | ------------ |
-| path | [Path2D](ts-components-canvas-path2d.md) | 否 | null | 需要绘制的Path2D。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ---------------------------------------- | ---- | ---- | ------------ |
+ | path | [Path2D](ts-components-canvas-path2d.md) | 否 | null | 需要绘制的Path2D。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Stroke {
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)
@@ -953,14 +998,16 @@ beginPath(): void
创建一个新的绘制路径。
-**示例:**
- ```
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct BeginPath {
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)
@@ -991,20 +1038,23 @@ moveTo(x: number, y: number): void
路径从当前点移动到指定点。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ---- | ------ | ---- | ---- | --------- |
-| x | number | 是 | 0 | 指定位置的x坐标。 |
-| y | number | 是 | 0 | 指定位置的y坐标。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ---- | ------ | ---- | ---- | --------- |
+ | x | number | 是 | 0 | 指定位置的x坐标。 |
+ | y | number | 是 | 0 | 指定位置的y坐标。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct MoveTo {
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)
@@ -1033,20 +1083,23 @@ lineTo(x: number, y: number): void
从当前点到指定点进行路径连接。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | --------- |
-| x | number | 是 | 0 | 指定位置的x坐标。 |
-| y | number | 是 | 0 | 指定位置的y坐标。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | --------- |
+ | x | number | 是 | 0 | 指定位置的x坐标。 |
+ | y | number | 是 | 0 | 指定位置的y坐标。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct LineTo {
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)
@@ -1075,14 +1128,16 @@ closePath(): void
结束当前路径形成一个封闭路径。
-**示例:**
- ```
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ClosePath {
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)
@@ -1109,25 +1164,34 @@ closePath(): void
### createPattern
-createPattern(image: ImageBitmap, repetition: string): void
+createPattern(image: ImageBitmap, repetition: string | null): CanvasPattern | null
通过指定图像和重复方式创建图片填充的模板。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
-| image | [ImageBitmap](ts-components-canvas-imagebitmap.md) | 是 | null | 图源对象,具体参考ImageBitmap对象。 |
-| repetition | string | 是 | “” | 设置图像重复的方式,取值为:'repeat'、'repeat-x'、 'repeat-y'、'no-repeat'。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
+ | image | [ImageBitmap](ts-components-canvas-imagebitmap.md) | 是 | null | 图源对象,具体参考ImageBitmap对象。 |
+ | repetition | string | 是 | “” | 设置图像重复的方式,取值为:'repeat'、'repeat-x'、 'repeat-y'、'no-repeat'。 |
+
+**返回值:**:
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [CanvasPattern](#canvaspattern) | 通过指定图像和重复方式创建图片填充的模板对象。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreatePattern {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private img:ImageBitmap = new ImageBitmap("common/images/icon.jpg")
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -1155,24 +1219,27 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number,
创建三次贝赛尔曲线的路径。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | -------------- |
-| cp1x | number | 是 | 0 | 第一个贝塞尔参数的x坐标值。 |
-| cp1y | number | 是 | 0 | 第一个贝塞尔参数的y坐标值。 |
-| cp2x | number | 是 | 0 | 第二个贝塞尔参数的x坐标值。 |
-| cp2y | number | 是 | 0 | 第二个贝塞尔参数的y坐标值。 |
-| x | number | 是 | 0 | 路径结束时的x坐标值。 |
-| y | number | 是 | 0 | 路径结束时的y坐标值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | -------------- |
+ | cp1x | number | 是 | 0 | 第一个贝塞尔参数的x坐标值。 |
+ | cp1y | number | 是 | 0 | 第一个贝塞尔参数的y坐标值。 |
+ | cp2x | number | 是 | 0 | 第二个贝塞尔参数的x坐标值。 |
+ | cp2y | number | 是 | 0 | 第二个贝塞尔参数的y坐标值。 |
+ | x | number | 是 | 0 | 路径结束时的x坐标值。 |
+ | y | number | 是 | 0 | 路径结束时的y坐标值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct BezierCurveTo {
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)
@@ -1201,21 +1268,25 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
创建二次贝赛尔曲线的路径。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | ----------- |
-| cpx | number | 是 | 0 | 贝塞尔参数的x坐标值。 |
-| cpy | number | 是 | 0 | 贝塞尔参数的y坐标值。 |
-| x | number | 是 | 0 | 路径结束时的x坐标值。 |
-| y | number | 是 | 0 | 路径结束时的y坐标值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | ----------- |
+ | cpx | number | 是 | 0 | 贝塞尔参数的x坐标值。 |
+ | cpy | number | 是 | 0 | 贝塞尔参数的y坐标值。 |
+ | x | number | 是 | 0 | 路径结束时的x坐标值。 |
+ | y | number | 是 | 0 | 路径结束时的y坐标值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct QuadraticCurveTo {
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)
@@ -1240,28 +1311,31 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
### arc
-arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
+arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
绘制弧线路径。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------------- | ------- | ---- | ----- | ---------- |
-| x | number | 是 | 0 | 弧线圆心的x坐标值。 |
-| y | number | 是 | 0 | 弧线圆心的y坐标值。 |
-| radius | number | 是 | 0 | 弧线的圆半径。 |
-| startAngle | number | 是 | 0 | 弧线的起始弧度。 |
-| endAngle | number | 是 | 0 | 弧线的终止弧度。 |
-| anticlockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------------- | ------- | ---- | ----- | ---------- |
+ | x | number | 是 | 0 | 弧线圆心的x坐标值。 |
+ | y | number | 是 | 0 | 弧线圆心的y坐标值。 |
+ | radius | number | 是 | 0 | 弧线的圆半径。 |
+ | startAngle | number | 是 | 0 | 弧线的起始弧度。 |
+ | endAngle | number | 是 | 0 | 弧线的终止弧度。 |
+ | counterclockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Arc {
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)
@@ -1289,23 +1363,26 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
依据圆弧经过的点和圆弧半径创建圆弧路径。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------ | ------ | ---- | ---- | --------------- |
-| x1 | number | 是 | 0 | 圆弧经过的第一个点的x坐标值。 |
-| y1 | number | 是 | 0 | 圆弧经过的第一个点的y坐标值。 |
-| x2 | number | 是 | 0 | 圆弧经过的第二个点的x坐标值。 |
-| y2 | number | 是 | 0 | 圆弧经过的第二个点的y坐标值。 |
-| radius | number | 是 | 0 | 圆弧的圆半径值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | --------------- |
+ | x1 | number | 是 | 0 | 圆弧经过的第一个点的x坐标值。 |
+ | y1 | number | 是 | 0 | 圆弧经过的第一个点的y坐标值。 |
+ | x2 | number | 是 | 0 | 圆弧经过的第二个点的x坐标值。 |
+ | y2 | number | 是 | 0 | 圆弧经过的第二个点的y坐标值。 |
+ | radius | number | 是 | 0 | 圆弧的圆半径值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ArcTo {
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)
@@ -1329,31 +1406,33 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
### ellipse
-ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
+ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
在规定的矩形区域绘制一个椭圆。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 说明 |
-| ------------- | ------- | ---- | ----- | ----------------- |
-| x | number | 是 | 0 | 椭圆圆心的x轴坐标。 |
-| y | number | 是 | 0 | 椭圆圆心的y轴坐标。 |
-| radiusX | number | 是 | 0 | 椭圆x轴的半径长度。 |
-| radiusY | number | 是 | 0 | 椭圆y轴的半径长度。 |
-| rotation | number | 是 | 0 | 椭圆的旋转角度,单位为弧度。 |
-| startAngle | number | 是 | 0 | 椭圆绘制的起始点角度,以弧度表示。 |
-| endAngle | number | 是 | 0 | 椭圆绘制的结束点角度,以弧度表示。 |
-| anticlockwise | boolean | 否 | false | 是否以逆时针方向绘制椭圆。 |
+**参数:**
-**示例:**
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ------------- | ------- | ---- | ----- | ----------------- |
+ | x | number | 是 | 0 | 椭圆圆心的x轴坐标。 |
+ | y | number | 是 | 0 | 椭圆圆心的y轴坐标。 |
+ | radiusX | number | 是 | 0 | 椭圆x轴的半径长度。 |
+ | radiusY | number | 是 | 0 | 椭圆y轴的半径长度。 |
+ | rotation | number | 是 | 0 | 椭圆的旋转角度,单位为弧度。 |
+ | startAngle | number | 是 | 0 | 椭圆绘制的起始点角度,以弧度表示。 |
+ | endAngle | number | 是 | 0 | 椭圆绘制的结束点角度,以弧度表示。 |
+ | counterclockwise | boolean | 否 | false | 是否以逆时针方向绘制椭圆。 |
- ```
+**示例:**
+
+ ```ts
+ // 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)
@@ -1377,26 +1456,29 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number
### rect
-rect(x: number, y: number, width: number, height: number): void
+rect(x: number, y: number, w: number, h: number): void
创建矩形路径。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------ | ------ | ---- | ---- | ------------- |
-| x | number | 是 | 0 | 指定矩形的左上角x坐标值。 |
-| y | number | 是 | 0 | 指定矩形的左上角y坐标值。 |
-| width | number | 是 | 0 | 指定矩形的宽度。 |
-| height | number | 是 | 0 | 指定矩形的高度。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | x | number | 是 | 0 | 指定矩形的左上角x坐标值。 |
+ | y | number | 是 | 0 | 指定矩形的左上角y坐标值。 |
+ | w | number | 是 | 0 | 指定矩形的宽度。 |
+ | h | number | 是 | 0 | 指定矩形的高度。 |
+
+**示例:**
+
+ ```ts
+ // 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)
@@ -1419,12 +1501,21 @@ rect(x: number, y: number, width: number, height: number): void
### fill
-fill(): void
+fill(fillRule?: CanvasFillRule): void
对封闭路径进行填充。
-**示例:**
- ```
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | fillRule | CanvasFillRule | 否 | "nonzero" | 指定要填充对象的规则。
可选参数为:"nonzero", "evenodd"。|
+
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Fill {
@@ -1451,14 +1542,73 @@ fill(): void
![zh-cn_image_0000001238952381](figures/zh-cn_image_0000001238952381.png)
+fill(path: Path2D, fillRule?: CanvasFillRule): void
+
+对封闭路径进行填充。
+
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | path | Path2D | 是 | | Path2D填充路径。 |
+ | fillRule | CanvasFillRule | 否 | "nonzero" | 指定要填充对象的规则。
可选参数为:"nonzero", "evenodd"。|
+
+
+**示例:**
+
+```ts
+// xxx.ets
+@Entry
+@Component
+struct Fill {
+ 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(() =>{
+ let region = new Path2D();
+ region.moveTo(30, 90);
+ region.lineTo(110, 20);
+ region.lineTo(240, 130);
+ region.lineTo(60, 130);
+ region.lineTo(190, 20);
+ region.lineTo(270, 90);
+ region.closePath();
+ // Fill path
+ this.context.fillStyle = 'green';
+ this.context.fill(region, "evenodd");
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+ ```
+
+ ![zh-cn_image_000000127777774](figures/zh-cn_image_000000127777774.png)
+
+
### clip
-clip(): void
+clip(fillRule?: CanvasFillRule): void
设置当前路径为剪切路径。
-**示例:**
- ```
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | fillRule | CanvasFillRule | 否 | "nonzero" | 指定要剪切对象的规则。
可选参数为:"nonzero", "evenodd"。|
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Clip {
@@ -1488,25 +1638,75 @@ clip(): void
![zh-cn_image_0000001194032462](figures/zh-cn_image_0000001194032462.png)
+clip(path: Path2D, fillRule?: CanvasFillRule): void
+
+对封闭路径进行填充。该接口为空接口。
+
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | path | Path2D | 是 | - | Path2D剪切路径。 |
+ | fillRule | CanvasFillRule | 否 | "nonzero" | 指定要剪切对象的规则。
可选参数为:"nonzero", "evenodd"。|
+
+
+
+### filter
+
+filter(filter: string): void
+
+为Canvas图形设置各类滤镜效果。该接口为空接口。
+
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | filter | string | 是 | - | 接受各类滤镜效果的函数。|
+
+
+### getTransform
+
+getTransform(): Matrix2D
+
+获取当前被应用到上下文的转换矩阵。该接口为空接口。
+
+
+### resetTransform
+
+resetTransform(): void
+
+使用单位矩阵重新设置当前变形。该接口为空接口。
+
+
+### direction
+
+direction(direction: CanvasDirection): void
+
+绘制文本时,描述当前文本方向的属性。该接口为空接口。
+
+
### rotate
-rotate(rotate: number): void
+rotate(angle: number): void
针对当前坐标轴进行顺时针旋转。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------ | ------ | ---- | ---- | ---------------------------------------- |
-| rotate | number | 是 | 0 | 设置顺时针旋转的弧度值,可以通过Math.PI / 180将角度转换为弧度值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------ | ------ | ---- | ---- | ---------------------------------------- |
+ | angle | number | 是 | 0 | 设置顺时针旋转的弧度值,可以通过Math.PI / 180将角度转换为弧度值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Rotate {
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)
@@ -1533,20 +1733,23 @@ scale(x: number, y: number): void
设置canvas画布的缩放变换属性,后续的绘制操作将按照缩放比例进行缩放。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | ----------- |
-| x | number | 是 | 0 | 设置水平方向的缩放值。 |
-| y | number | 是 | 0 | 设置垂直方向的缩放值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | ----------- |
+ | x | number | 是 | 0 | 设置水平方向的缩放值。 |
+ | y | number | 是 | 0 | 设置垂直方向的缩放值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Scale {
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)
@@ -1570,35 +1773,38 @@ scale(x: number, y: number): void
### transform
-transform(scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number): void
+transform(a: number, b: number, c: number, d: number, e: number, f: number): void
transform方法对应一个变换矩阵,想对一个图形进行变化的时候,只要设置此变换矩阵相应的参数,对图形的各个定点的坐标分别乘以这个矩阵,就能得到新的定点的坐标。矩阵变换效果可叠加。
-> **说明:**
-> 变换后的坐标计算方式(x和y为变换前坐标,x'和y'为变换后坐标):
+> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+> 变换后的坐标计算方式(x和y为变换前坐标,x'和y'为变换后坐标):
>
-> - x' = scaleX \* x + skewY \* y + translateX
+> - x' = scaleX \* x + skewY \* y + translateX
>
-> - y' = skewX \* x + scaleY \* y + translateY
+> - y' = skewX \* x + scaleY \* y + translateY
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---------- | ------ | ---- | ---- | -------- |
-| scaleX | number | 是 | 0 | 指定水平缩放值。 |
-| skewX | number | 是 | 0 | 指定水平倾斜值。 |
-| skewY | number | 是 | 0 | 指定垂直倾斜值。 |
-| scaleY | number | 是 | 0 | 指定垂直缩放值。 |
-| translateX | number | 是 | 0 | 指定水平移动值。 |
-| translateY | number | 是 | 0 | 指定垂直移动值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---------- | ------ | ---- | ---- | -------- |
+ | a | number | 是 | 0 |scaleX: 指定水平缩放值。 |
+ | b | number | 是 | 0 |skewX: 指定水平倾斜值。 |
+ | c | number | 是 | 0 |skewY: 指定垂直倾斜值。 |
+ | d | number | 是 | 0 |scaleY: 指定垂直缩放值。 |
+ | e | number | 是 | 0 |translateX: 指定水平移动值。 |
+ | f | number | 是 | 0 |translateY: 指定垂直移动值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Transform {
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)
@@ -1627,28 +1833,31 @@ transform方法对应一个变换矩阵,想对一个图形进行变化的时
### setTransform
-setTransform(scaleX: number, skewX: number, skewY: number, scale: number, translateX: number, translateY: number): void
+setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
setTransfrom方法使用的参数和transform()方法相同,但setTransform()方法会重置现有的变换矩阵并创建新的变换矩阵。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---------- | ------ | ---- | ---- | -------- |
-| scaleX | number | 是 | 0 | 指定水平缩放值。 |
-| skewX | number | 是 | 0 | 指定水平倾斜值。 |
-| skewY | number | 是 | 0 | 指定垂直倾斜值。 |
-| scaleY | number | 是 | 0 | 指定垂直缩放值。 |
-| translateX | number | 是 | 0 | 指定水平移动值。 |
-| translateY | number | 是 | 0 | 指定垂直移动值。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---------- | ------ | ---- | ---- | -------- |
+ | a | number | 是 | 0 |scaleX: 指定水平缩放值。 |
+ | b | number | 是 | 0 |skewX: 指定水平倾斜值。 |
+ | c | number | 是 | 0 |skewY: 指定垂直倾斜值。 |
+ | d | number | 是 | 0 |scaleY: 指定垂直缩放值。 |
+ | e | number | 是 | 0 |translateX: 指定水平移动值。 |
+ | f | number | 是 | 0 |translateY: 指定垂直移动值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct SetTransform {
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)
@@ -1672,26 +1881,34 @@ setTransfrom方法使用的参数和transform()方法相同,但setTransform()
![zh-cn_image_0000001238712421](figures/zh-cn_image_0000001238712421.png)
+setTransform(transform?: Matrix2D): void
+
+以Matrix2D对象为模板重置现有的变换矩阵并创建新的变换矩阵。该接口为空接口。
+
+
### translate
translate(x: number, y: number): void
移动当前坐标系的原点。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | -------- |
-| x | number | 是 | 0 | 设置水平平移量。 |
-| y | number | 是 | 0 | 设置竖直平移量。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | -------- |
+ | x | number | 是 | 0 | 设置水平平移量。 |
+ | y | number | 是 | 0 | 设置竖直平移量。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Translate {
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)
@@ -1717,34 +1934,38 @@ translate(x: number, y: number): void
drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number): void
-drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number, dWidth: number, dHeight: number): void
+drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number, dw: number, dh: number): void
-drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number):void
+drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number):void
进行图像绘制。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
-| image | [ImageBitmap](ts-components-canvas-imagebitmap.md)或[PixelMap](../apis/js-apis-image.md#pixelmap7) | 是 | null | 图片资源,请参考ImageBitmap或PixelMap。 |
-| sx | number | 否 | 0 | 裁切源图像时距离源图像左上角的x坐标值。 |
-| sy | number | 否 | 0 | 裁切源图像时距离源图像左上角的y坐标值。 |
-| sWidth | number | 否 | 0 | 裁切源图像时需要裁切的宽度。 |
-| sHeight | number | 否 | 0 | 裁切源图像时需要裁切的高度。 |
-| dx | number | 是 | 0 | 绘制区域左上角在x轴的位置。 |
-| dy | number | 是 | 0 | 绘制区域左上角在y 轴的位置。 |
-| dWidth | number | 否 | 0 | 绘制区域的宽度。 当绘制区域的宽度和裁剪图像的宽度不一致时,将图像宽度拉伸或压缩为绘制区域的宽度。 |
-| dHeight | number | 否 | 0 | 绘制区域的高度。 当绘制区域的高度和裁剪图像的高度不一致时,将图像高度拉伸或压缩为绘制区域的高度。 |
+**参数:**
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
+ | image | [ImageBitmap](ts-components-canvas-imagebitmap.md)或[PixelMap](../apis/js-apis-image.md#pixelmap7) | 是 | null | 图片资源,请参考ImageBitmap或PixelMap。 |
+ | sx | number | 否 | 0 | 裁切源图像时距离源图像左上角的x坐标值。 |
+ | sy | number | 否 | 0 | 裁切源图像时距离源图像左上角的y坐标值。 |
+ | sw | number | 否 | 0 | 裁切源图像时需要裁切的宽度。 |
+ | sh | number | 否 | 0 | 裁切源图像时需要裁切的高度。 |
+ | dx | number | 是 | 0 | 绘制区域左上角在x轴的位置。 |
+ | dy | number | 是 | 0 | 绘制区域左上角在y 轴的位置。 |
+ | dw | number | 否 | 0 | 绘制区域的宽度。当绘制区域的宽度和裁剪图像的宽度不一致时,将图像宽度拉伸或压缩为绘制区域的宽度。 |
+ | dh | number | 否 | 0 | 绘制区域的高度。当绘制区域的高度和裁剪图像的高度不一致时,将图像高度拉伸或压缩为绘制区域的高度。 |
-**示例:**
- ```
+
+**示例:**
+
+ ```ts
+ // 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)
@@ -1766,79 +1987,257 @@ drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sWidth: number,
### createImageData
-createImageData(width: number, height: number): Object
+createImageData(sw: number, sh: number): ImageData
创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。
-**参数:**
-| 参数 | 类型 | 必填 | 默认 | 描述 |
-| ------ | ------ | ---- | ---- | ------------- |
-| width | number | 是 | 0 | ImageData的宽度。 |
-| height | number | 是 | 0 | ImageData的高度。 |
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认 | 描述 |
+ | ------ | ------ | ---- | ---- | ------------- |
+ | sw | number | 是 | 0 | ImageData的宽度。 |
+ | sh | number | 是 | 0 | ImageData的高度。 |
### createImageData
-createImageData(imageData: Object): Object
+createImageData(imageData: ImageData): ImageData
创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。
-**参数:**
-| 参数 | 类型 | 必填 | 默认 | 描述 |
-| --------- | ------ | ---- | ---- | ----------------- |
-| imagedata | Object | 是 | null | 复制现有的ImageData对象。 |
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认 | 描述 |
+ | --------- | ------ | ---- | ---- | ----------------- |
+ | imagedata | [ImageData](ts-components-canvas-imagebitmap.md)| 是 | null | 复制现有的ImageData对象。 |
+
+ **返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象。|
+
### getPixelMap
getPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap
以当前canvas指定区域内的像素创建[PixelMap](../apis/js-apis-image.md#pixelmap7)对象。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | --------------- |
-| sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
-| sy | number | 是 | 0 | 需要输出的区域的左上角y坐标。 |
-| sw | number | 是 | 0 | 需要输出的区域的宽度。 |
-| sh | number | 是 | 0 | 需要输出的区域的高度。 |
+
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | --------------- |
+ | sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
+ | sy | number | 是 | 0 | 需要输出的区域的左上角y坐标。 |
+ | sw | number | 是 | 0 | 需要输出的区域的宽度。 |
+ | sh | number | 是 | 0 | 需要输出的区域的高度。 |
+
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [PixelMap](../apis/js-apis-image.md#pixelmap7) | 新的PixelMap对象。 |
### getImageData
-getImageData(sx: number, sy: number, sw: number, sh: number): Object
+getImageData(sx: number, sy: number, sw: number, sh: number): ImageData
以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagebitmap.md)对象。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | --------------- |
-| sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
-| sy | number | 是 | 0 | 需要输出的区域的左上角y坐标。 |
-| sw | number | 是 | 0 | 需要输出的区域的宽度。 |
-| sh | number | 是 | 0 | 需要输出的区域的高度。 |
+
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | --------------- |
+ | sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
+ | sy | number | 是 | 0 | 需要输出的区域的左上角y坐标。 |
+ | sw | number | 是 | 0 | 需要输出的区域的宽度。 |
+ | sh | number | 是 | 0 | 需要输出的区域的高度。 |
+
+ **返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象。 |
### putImageData
-putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void
+putImageData(imageData: ImageData, dx: number, dy: number): void
+
+putImageData(imageData: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void
使用[ImageData](ts-components-canvas-imagebitmap.md)数据填充新的矩形区域。
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ----------- | ------ | ---- | ------------ | ----------------------------- |
+ | imagedata | [ImageData](ts-components-canvas-imagebitmap.md) | 是 | null | 包含像素值的ImageData对象。 |
+ | dx | number | 是 | 0 | 填充区域在x轴方向的偏移量。 |
+ | dy | number | 是 | 0 | 填充区域在y轴方向的偏移量。 |
+ | dirtyX | number | 否 | 0 | 源图像数据矩形裁切范围左上角距离源图像左上角的x轴偏移量。 |
+ | dirtyY | number | 否 | 0 | 源图像数据矩形裁切范围左上角距离源图像左上角的y轴偏移量。 |
+ | dirtyWidth | number | 否 | imagedata的宽度 | 源图像数据矩形裁切范围的宽度。 |
+ | dirtyHeight | number | 否 | imagedata的高度 | 源图像数据矩形裁切范围的高度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct PutImageData {
+ 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 imageData = this.context.createImageData(100, 100)
+ for (var i = 0; i < imageData.data.length; i += 4) {
+ imageData.data[i + 0] = 255
+ imageData.data[i + 1] = 0
+ imageData.data[i + 2] = 255
+ imageData.data[i + 3] = 255
+ }
+ this.context.putImageData(imageData, 10, 10)
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
+ ```
+
+ ![zh-cn_image_0000001238952387](figures/zh-cn_image_0000001238952387.png)
+
+
+### setLineDash
+
+setLineDash(segments: number[]): void
+
+设置画布的虚线样式。
+
**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ----------- | ------ | ---- | ------------ | ----------------------------- |
-| imagedata | Object | 是 | null | 包含像素值的ImageData对象。 |
-| dx | number | 是 | 0 | 填充区域在x轴方向的偏移量。 |
-| dy | number | 是 | 0 | 填充区域在y轴方向的偏移量。 |
-| dirtyX | number | 否 | 0 | 源图像数据矩形裁切范围左上角距离源图像左上角的x轴偏移量。 |
-| dirtyY | number | 否 | 0 | 源图像数据矩形裁切范围左上角距离源图像左上角的y轴偏移量。 |
-| dirtyWidth | number | 否 | imagedata的宽度 | 源图像数据矩形裁切范围的宽度。 |
-| dirtyHeight | number | 否 | imagedata的高度 | 源图像数据矩形裁切范围的高度。 |
+
+| 参数 | 类型 | 描述 |
+| -------- | ----- | -------------------- |
+| segments | number[] | 描述线段如何交替和线段间距长度的数组。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct SetLineDash {
+ 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.arc(100, 75, 50, 0, 6.28)
+ this.context.setLineDash([10,20])
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
+ ```
+
+ ![zh-cn_image_000000127777771](figures/zh-cn_image_000000127777771.png)
+
+
+### getLineDash
+
+getLineDash(): number[]
+
+获得当前画布的虚线样式。
+
+**返回值:**
+
+| 类型 | 说明 |
+| ----- | ------------------------ |
+| number[] | 返回数组,该数组用来描述线段如何交替和间距长度。 |
**示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct GetLineDash {
+ 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)
+ this.context.arc(100, 75, 50, 0, 6.28)
+ this.context.setLineDash([10,20])
+ this.context.stroke();
+ let res = this.context.getLineDash()
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
```
+
+
+### imageSmoothingQuality
+
+imageSmoothingQuality(quality: imageSmoothingQuality)
+
+用于设置图像平滑度。该接口为空接口。
+
+ **参数:**
+
+| 参数 | 类型 | 描述 |
+| ------ | ----------- | ------------------ |
+| quality |imageSmoothingQuality | 支持如下三种类型:'low', 'medium', 'high'。 |
+
+
+
+### transferFromImageBitmap
+
+transferFromImageBitmap(bitmap: ImageBitmap): void
+
+显示给定的ImageBitmap对象。
+
+**参数:**
+
+| 参数 | 类型 | 描述 |
+| ------ | ----------- | ------------------ |
+| bitmap |[ImageData](ts-components-canvas-imagebitmap.md) | 待显示的ImageBitmap对象。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct PutImageData {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
@@ -1847,14 +2246,16 @@ putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?
.height('100%')
.backgroundColor('#ffff00')
.onReady(() =>{
- var imageData = this.context.createImageData(100, 100)
+ var imageData = this.offContext.createImageData(100, 100)
for (var i = 0; i < imageData.data.length; i += 4) {
imageData.data[i + 0] = 255
imageData.data[i + 1] = 0
imageData.data[i + 2] = 255
imageData.data[i + 3] = 255
}
- this.context.putImageData(imageData, 10, 10)
+ this.offContext.putImageData(imageData, 10, 10)
+ var image = this.offContext.transferToImageBitmap()
+ this.context.transferFromImageBitmap(image)
})
}
.width('100%')
@@ -1862,8 +2263,52 @@ putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?
}
}
```
+ ![zh-cn_image_000000127777773](figures/zh-cn_image_000000127777773.png)
- ![zh-cn_image_0000001238952387](figures/zh-cn_image_0000001238952387.png)
+### toDataURL
+
+toDataURL(type?: string, quality?: number): string
+
+生成一个包含图片展示的URL。
+
+**参数:**
+
+| 参数名 | 参数类型 | 必填 | 描述 |
+| ------- | ------ | ---- | ---------------------------------------- |
+| type | string | 否 | 可选参数,用于指定图像格式,默认格式为image/png。 |
+| quality | number | 否 | 在指定图片格式为image/jpeg或image/webp的情况下,可以从0到1的区间内选择图片的质量。如果超出取值范围,将会使用默认值0.92。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------ | --------- |
+| string | 图像的URL地址。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+@Entry
+@Component
+struct ToDataURL {
+ 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 dataURL = this.context.toDataURL();
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+ ```
### restore
@@ -1872,14 +2317,17 @@ restore(): void
对保存的绘图上下文进行恢复。
-**示例:**
- ```
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
-
+ private img:ImageBitmap = new ImageBitmap("common/images/icon.jpg")
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -1901,16 +2349,18 @@ restore(): void
save(): void
-对当前的绘图上下文进行保存。
+将当前状态放入栈中,保存canvas的全部状态,通常在需要保存绘制状态时调用。
-**示例:**
- ```
+**示例:**
+
+ ```ts
+ // 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)
@@ -1934,16 +2384,19 @@ createLinearGradient(x0: number, y0: number, x1: number, y1: number): void
创建一个线性渐变色。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | -------- |
-| x0 | number | 是 | 0 | 起点的x轴坐标。 |
-| y0 | number | 是 | 0 | 起点的y轴坐标。 |
-| x1 | number | 是 | 0 | 终点的x轴坐标。 |
-| y1 | number | 是 | 0 | 终点的y轴坐标。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | -------- |
+ | x0 | number | 是 | 0 | 起点的x轴坐标。 |
+ | y0 | number | 是 | 0 | 起点的y轴坐标。 |
+ | x1 | number | 是 | 0 | 终点的x轴坐标。 |
+ | y1 | number | 是 | 0 | 终点的y轴坐标。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreateLinearGradient {
@@ -1980,18 +2433,21 @@ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number,
创建一个径向渐变色。
-**参数:**
-| 参数 | 类型 | 必填 | 默认值 | 描述 |
-| ---- | ------ | ---- | ---- | ----------------- |
-| x0 | number | 是 | 0 | 起始圆的x轴坐标。 |
-| y0 | number | 是 | 0 | 起始圆的y轴坐标。 |
-| r0 | number | 是 | 0 | 起始圆的半径。必须是非负且有限的。 |
-| x1 | number | 是 | 0 | 终点圆的x轴坐标。 |
-| y1 | number | 是 | 0 | 终点圆的y轴坐标。 |
-| r1 | number | 是 | 0 | 终点圆的半径。必须为非负且有限的。 |
+**参数:**
-**示例:**
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | ---- | ------ | ---- | ---- | ----------------- |
+ | x0 | number | 是 | 0 | 起始圆的x轴坐标。 |
+ | y0 | number | 是 | 0 | 起始圆的y轴坐标。 |
+ | r0 | number | 是 | 0 | 起始圆的半径。必须是非负且有限的。 |
+ | x1 | number | 是 | 0 | 终点圆的x轴坐标。 |
+ | y1 | number | 是 | 0 | 终点圆的y轴坐标。 |
+ | r1 | number | 是 | 0 | 终点圆的半径。必须为非负且有限的。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreateRadialGradient {
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md
index 32a14b8bc4e168b013a9f8380f68e43c1cb56231..e74488c562835c6153ba7e8127e8f27a44cdb25d 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md
@@ -1,8 +1,6 @@
# Canvas
-> **说明:**
->
-> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
+> **说明:** 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
提供画布组件,用于自定义绘制图形。
@@ -16,13 +14,13 @@
## 接口
-Canvas(context: CanvasRenderingContext2D)
+Canvas(context?: CanvasRenderingContext2D)
**参数:**
-| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
-| ------- | ---------------------------------------- | ---- | ---- | ---------------------------- |
-| context | [CanvasRenderingContext2D](ts-canvasrenderingcontext2d.md) | 是 | - | 见CanvasRenderingContext2D对象。 |
+ | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+ | ------- | ---------------------------------------- | ---- | ---- | ---------------------------- |
+ | context | [CanvasRenderingContext2D](ts-canvasrenderingcontext2d.md) | 否 | - | 见CanvasRenderingContext2D对象。 |
## 属性
@@ -34,7 +32,7 @@ Canvas(context: CanvasRenderingContext2D)
| 名称 | 参数 | 描述 |
| ----------------------------- | ---- | -------------------- |
-| onReady(callback: () => void) | 无 | 画布组件的事件回调,可以在此时进行绘制。 |
+| onReady(event: () => void) | 无 | 画布组件的事件回调,可以在此时进行绘制。 |
## 示例
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md
index 503f356cdfb8a25f2fd707d7f910198f409a4322..e2f3f510bef985abf5c868223bf71f477219ea80 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md
@@ -1,17 +1,25 @@
# ImageBitmap对象
> **说明:**
->
-> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
+> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
-CanvasImageData对象可以存储canvas渲染的像素数据。
+ImageBitmap对象可以存储canvas渲染的像素数据。
## 属性
-| 属性 | 类型 | 描述 |
-| ------ | ------------------------- | ---------------------------- |
-| width | number | 矩形区域实际像素宽度。 |
-| height | number | 矩形区域实际像素高度。 |
-| data | <Uint8ClampedArray> | 一维数组,保存了相应的颜色数据,数据值范围为0到255。 |
+| 属性 | 类型 | 描述 |
+| -------- | -------- | -------- |
+| width | number | ImageBitmap的像素宽度。 |
+| height | number | ImageBitmap的像素高度。 |
+
+
+## 方法
+
+
+### close
+
+close()
+
+释放ImageBitmap对象相关联的所有图形资源。该接口为空接口。
\ No newline at end of file
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md
index 7a0306444c98c9e9f42f4d966d7515813c554bc5..d1df7c7a5ec2294b75c43ee390e0cfb3ccfad0ff 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md
@@ -1,8 +1,7 @@
# ImageData对象
> **说明:**
->
-> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
+> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
ImageData对象可以存储canvas渲染的像素数据。
@@ -10,8 +9,9 @@ ImageData对象可以存储canvas渲染的像素数据。
## 属性
-| 属性 | 类型 | 描述 |
-| ------ | ------------------------- | ---------------------------- |
-| width | number | 矩形区域实际像素宽度。 |
-| height | number | 矩形区域实际像素高度。 |
-| data | <Uint8ClampedArray> | 一维数组,保存了相应的颜色数据,数据值范围为0到255。 |
+| 属性 | 类型 | 描述 |
+| -------- | -------- | -------- |
+| width | number | 矩形区域实际像素宽度。 |
+| height | number | 矩形区域实际像素高度。 |
+| data | Uint8ClampedArray | 一维数组,保存了相应的颜色数据,数据值范围为0到255。 |
+
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md
index e457d286728476cdd8a566903c5622843104270f..63004c2e78848e356e474a5ee4b38d13f6162c66 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md
@@ -1,8 +1,7 @@
# Path2D对象
> **说明:**
->
-> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
+> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
路径对象,支持通过对象的接口进行路径的描述,并通过Canvas的stroke接口进行绘制。
@@ -10,26 +9,31 @@
## addPath
-addPath(path: Object): void
+addPath(path: path2D, transform?:Matrix2D): void
将另一个路径添加到当前的路径对象中。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ---- | ------ | ---- | ---- | -------------- |
- | path | Object | 是 | null | 需要添加到当前路径的路径对象 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | path | path2D | 是 | - | 需要添加到当前路径的路径对象。|
+ | transform | Matrix2D | 否 | null | 新增路径的变换矩阵对象。 |
+
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct AddPath {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
-
+
private path2Da: Path2D = new Path2D("M250 150 L150 350 L350 350 Z")
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -56,15 +60,17 @@ closePath(): void
将路径的当前点移回到路径的起点,当前点到起点间画一条直线。如果形状已经闭合或只有一个点,则此功能不执行任何操作。
-- 示例
- ```
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ClosePath {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -94,21 +100,24 @@ moveTo(x: number, y: number): void
将路径的当前坐标点移动到目标点,移动过程中不绘制线条。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ---- | ------ | ---- | ---- | ------- |
- | x | number | 是 | 0 | 目标点X轴坐标 |
- | y | number | 是 | 0 | 目标点Y轴坐标 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x | number | 是 | 0 | 目标点X轴坐标。 |
+ | y | number | 是 | 0 | 目标点Y轴坐标。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct MoveTo {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -138,21 +147,24 @@ lineTo(x: number, y: number): void
从当前点绘制一条直线到目标点。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ---- | ------ | ---- | ---- | ------- |
- | x | number | 是 | 0 | 目标点X轴坐标 |
- | y | number | 是 | 0 | 目标点Y轴坐标 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x | number | 是 | 0 | 目标点X轴坐标。 |
+ | y | number | 是 | 0 | 目标点Y轴坐标。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct LineTo {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -183,25 +195,28 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number,
创建三次贝赛尔曲线的路径。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ---- | ------ | ---- | ---- | -------------- |
- | cp1x | number | 是 | 0 | 第一个贝塞尔参数的x坐标值。 |
- | cp1y | number | 是 | 0 | 第一个贝塞尔参数的y坐标值。 |
- | cp2x | number | 是 | 0 | 第二个贝塞尔参数的x坐标值。 |
- | cp2y | number | 是 | 0 | 第二个贝塞尔参数的y坐标值。 |
- | x | number | 是 | 0 | 路径结束时的x坐标值。 |
- | y | number | 是 | 0 | 路径结束时的y坐标值。 |
-
-- 示例
- ```
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | cp1x | number | 是 | 0 | 第一个贝塞尔参数的x坐标值。 |
+ | cp1y | number | 是 | 0 | 第一个贝塞尔参数的y坐标值。 |
+ | cp2x | number | 是 | 0 | 第二个贝塞尔参数的x坐标值。 |
+ | cp2y | number | 是 | 0 | 第二个贝塞尔参数的y坐标值。 |
+ | x | number | 是 | 0 | 路径结束时的x坐标值。 |
+ | y | number | 是 | 0 | 路径结束时的y坐标值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct BezierCurveTo {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -228,23 +243,26 @@ quadraticCurveTo(cpx: number, cpy: number, x: number ,y: number): void
创建二次贝赛尔曲线的路径。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ---- | ------ | ---- | ---- | ----------- |
- | cpx | number | 是 | 0 | 贝塞尔参数的x坐标值。 |
- | cpy | number | 是 | 0 | 贝塞尔参数的y坐标值。 |
- | x | number | 是 | 0 | 路径结束时的x坐标值。 |
- | y | number | 是 | 0 | 路径结束时的y坐标值。 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | cpx | number | 是 | 0 | 贝塞尔参数的x坐标值。 |
+ | cpy | number | 是 | 0 | 贝塞尔参数的y坐标值。 |
+ | x | number | 是 | 0 | 路径结束时的x坐标值。 |
+ | y | number | 是 | 0 | 路径结束时的y坐标值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct QuadraticCurveTo {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -268,29 +286,32 @@ quadraticCurveTo(cpx: number, cpy: number, x: number ,y: number): void
## arc
-arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
+arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
绘制弧线路径。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ------------- | ------- | ---- | ----- | ---------- |
- | x | number | 是 | 0 | 弧线圆心的x坐标值。 |
- | y | number | 是 | 0 | 弧线圆心的y坐标值。 |
- | radius | number | 是 | 0 | 弧线的圆半径。 |
- | startAngle | number | 是 | 0 | 弧线的起始弧度。 |
- | endAngle | number | 是 | 0 | 弧线的终止弧度。 |
- | anticlockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
-
-- 示例
- ```
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x | number | 是 | 0 | 弧线圆心的x坐标值。 |
+ | y | number | 是 | 0 | 弧线圆心的y坐标值。 |
+ | radius | number | 是 | 0 | 弧线的圆半径。 |
+ | startAngle | number | 是 | 0 | 弧线的起始弧度。 |
+ | endAngle | number | 是 | 0 | 弧线的终止弧度。 |
+ | counterclockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Arc {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -316,24 +337,27 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
依据圆弧经过的点和圆弧半径创建圆弧路径。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ------ | ------ | ---- | ---- | --------------- |
- | x1 | number | 是 | 0 | 圆弧经过的第一个点的x坐标值。 |
- | y1 | number | 是 | 0 | 圆弧经过的第一个点的y坐标值。 |
- | x2 | number | 是 | 0 | 圆弧经过的第二个点的x坐标值。 |
- | y2 | number | 是 | 0 | 圆弧经过的第二个点的y坐标值。 |
- | radius | number | 是 | 0 | 圆弧的圆半径值。 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x1 | number | 是 | 0 | 圆弧经过的第一个点的x坐标值。 |
+ | y1 | number | 是 | 0 | 圆弧经过的第一个点的y坐标值。 |
+ | x2 | number | 是 | 0 | 圆弧经过的第二个点的x坐标值。 |
+ | y2 | number | 是 | 0 | 圆弧经过的第二个点的y坐标值。 |
+ | radius | number | 是 | 0 | 圆弧的圆半径值。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ArcTo {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -356,31 +380,34 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
## ellipse
-ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: number): void
+ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: number): void
在规定的矩形区域绘制一个椭圆。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ------------- | ------ | ---- | ---- | ------------------------------------ |
- | x | number | 是 | 0 | 椭圆圆心的x轴坐标。 |
- | y | number | 是 | 0 | 椭圆圆心的y轴坐标。 |
- | radiusX | number | 是 | 0 | 椭圆x轴的半径长度。 |
- | radiusY | number | 是 | 0 | 椭圆y轴的半径长度。 |
- | rotation | number | 是 | 0 | 椭圆的旋转角度,单位为弧度。 |
- | startAngle | number | 是 | 0 | 椭圆绘制的起始点角度,以弧度表示。 |
- | endAngle | number | 是 | 0 | 椭圆绘制的结束点角度,以弧度表示。 |
- | anticlockwise | number | 否 | 0 | 是否以逆时针方向绘制椭圆,0为顺时针,1为逆时针。(可选参数,默认为0) |
-
-- 示例
- ```
+**参数:**
+
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x | number | 是 | 0 | 椭圆圆心的x轴坐标。 |
+ | y | number | 是 | 0 | 椭圆圆心的y轴坐标。 |
+ | radiusX | number | 是 | 0 | 椭圆x轴的半径长度。 |
+ | radiusY | number | 是 | 0 | 椭圆y轴的半径长度。 |
+ | rotation | number | 是 | 0 | 椭圆的旋转角度,单位为弧度。 |
+ | startAngle | number | 是 | 0 | 椭圆绘制的起始点角度,以弧度表示。 |
+ | endAngle | number | 是 | 0 | 椭圆绘制的结束点角度,以弧度表示。 |
+ | counterclockwise | number | 否 | 0 | 是否以逆时针方向绘制椭圆,0为顺时针,1为逆时针。(可选参数,默认为0) |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
@@ -403,27 +430,30 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number
## rect
-rect(x: number, y: number, width: number, height: number): void
+rect(x: number, y: number, w: number, h: number): void
创建矩形路径。
-- 参数
- | 参数 | 类型 | 必填 | 默认值 | 描述 |
- | ------ | ------ | ---- | ---- | ------------- |
- | x | number | 是 | 0 | 指定矩形的左上角x坐标值。 |
- | y | number | 是 | 0 | 指定矩形的左上角y坐标值。 |
- | width | number | 是 | 0 | 指定矩形的宽度。 |
- | height | number | 是 | 0 | 指定矩形的高度。 |
+**参数:**
-- 示例
- ```
+ | 参数 | 类型 | 必填 | 默认值 | 描述 |
+ | -------- | -------- | -------- | -------- | -------- |
+ | x | number | 是 | 0 | 指定矩形的左上角x坐标值。 |
+ | y | number | 是 | 0 | 指定矩形的左上角y坐标值。 |
+ | w | number | 是 | 0 | 指定矩形的宽度。 |
+ | h | number | 是 | 0 | 指定矩形的高度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
private settings: RenderingContextSettings = new RenderingContextSettings(true)
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
private path2Db: Path2D = new Path2D()
-
+
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Canvas(this.context)
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md
index f62674077b93bb96247757fbbdd6d202fdbd3e39..29f42de35dc9438639a8b5fe09b9959b92871aed 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md
@@ -11,39 +11,40 @@
OffscreenCanvasRenderingContext2D(width: number, height: number, setting: RenderingContextSettings)
-- 参数
- | 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
- | ------- | ---------------------------------------- | ---- | ---- | ------------------------------ |
- | width | number | 是 | - | 离屏画布的宽度 |
- | height | number | 是 | - | 离屏画布的高度 |
- | setting | [RenderingContextSettings](ts-canvasrenderingcontext2d.md#renderingcontextsettings) | 是 | - | 见RenderingContextSettings接口描述。 |
+**参数:**
+| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
+| ------- | ---------------------------------------- | ---- | ---- | ------------------------------ |
+| width | number | 是 | - | 离屏画布的宽度 |
+| height | number | 是 | - | 离屏画布的高度 |
+| setting | [RenderingContextSettings](ts-canvasrenderingcontext2d.md#renderingcontextsettings) | 是 | - | 见RenderingContextSettings接口描述。 |
-## 属性
-| 名称 | 类型 | 默认值 | 描述 |
-| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
-| [fillStyle](#fillstyle) | <color> \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | - | 指定绘制的填充色。
- 类型为<color>时,表示设置填充区域的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用 [createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
-| [lineWidth](#linewidth) | number | - | 设置绘制线条的宽度。 |
-| [strokeStyle](#strokestyle) | <color> \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | - | 设置描边的颜色。
- 类型为<color>时,表示设置描边使用的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
-| [lineCap](#linecap) | string | 'butt' | 指定线端点的样式,可选值为:
- 'butt':线端点以方形结束。
- 'round':线端点以圆形结束。
- 'square':线端点以方形结束,该样式下会增加一个长度和线段厚度相同,宽度是线段厚度一半的矩形。 |
-| [lineJoin](#linejoin) | string | 'miter' | 指定线段间相交的交点样式,可选值为:
- 'round':在线段相连处绘制一个扇形,扇形的圆角半径是线段的宽度。
- 'bevel':在线段相连处使用三角形为底填充, 每个部分矩形拐角独立。
- 'miter':在相连部分的外边缘处进行延伸,使其相交于一点,形成一个菱形区域,该属性可以通过设置miterLimit属性展现效果。 |
-| [miterLimit](#miterlimit) | number | 10 | 设置斜接面限制值,该值指定了线条相交处内角和外角的距离。 |
-| [font](#font) | string | 'normal normal 14px sans-serif' | 设置文本绘制中的字体样式。
语法:ctx.font='font-size font-family'
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列。
语法:ctx.font='font-style font-weight font-size font-family'
- font-style(可选),用于指定字体样式,支持如下几种样式:'normal', 'italic'。
- font-weight(可选),用于指定字体的粗细,支持如下几种类型:'normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900。
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列,支持如下几种类型:'sans-serif', 'serif', 'monospace'。 |
-| [textAlign](#textalign) | string | 'left' | 设置文本绘制中的文本对齐方式,可选值为:
- 'left':文本左对齐。
- 'right':文本右对齐。
- 'center':文本居中对齐。
- 'start':文本对齐界线开始的地方。
- 'end':文本对齐界线结束的地方。
> **说明:**
> ltr布局模式下start和left一致,rtl布局模式下start和right一致·。 |
-| [textBaseline](#textbaseline) | string | 'alphabetic' | 设置文本绘制中的水平对齐方式,可选值为:
- 'alphabetic':文本基线是标准的字母基线。
- 'top':文本基线在文本块的顶部。
- 'hanging':文本基线是悬挂基线。
- 'middle':文本基线在文本块的中间。
- 'ideographic':文字基线是表意字基线;如果字符本身超出了alphabetic基线,那么ideograhpic基线位置在字符本身的底部。
- 'bottom':文本基线在文本块的底部。 与ideographic基线的区别在于ideographic 基线不需要考虑下行字母。 |
-| [globalAlpha](#globalalpha) | number | - | 设置透明度,0.0为完全透明,1.0为完全不透明。 |
-| [lineDashOffset](#linedashoffset) | number | 0.0 | 设置画布的虚线偏移量,精度为float。 |
-| [globalCompositeOperation](#globalcompositeoperation) | string | 'source-over' | 设置合成操作的方式。类型字段可选值有'source-over','source-atop','source-in','source-out','destination-over','destination-atop','destination-in','destination-out','lighter','copy','xor'。 |
-| [shadowBlur](#shadowblur) | number | 0.0 | 设置绘制阴影时的模糊级别,值越大越模糊,精度为float。 |
-| [shadowColor](#shadowcolor) | <color> | - | 设置绘制阴影时的阴影颜色。 |
-| [shadowOffsetX](#shadowoffsetx) | number | - | 设置绘制阴影时和原有对象的水平偏移值。 |
-| [shadowOffsetY](#shadowoffsety) | number | - | 设置绘制阴影时和原有对象的垂直偏移值。 |
-| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | true | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。 |
-| imageSmoothingQuality | string | 'low' | 用于设置图像平滑度,支持如下三种类型:'low', 'medium', 'high'。 |
+## 属性
-> **说明:**
-> <color>类型格式为 'rgb(255, 255, 255)','rgba(255, 255, 255, 1.0)','\#FFFFFF'。
+| 名称 | 类型 | 描述 |
+| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- |
+| [fillStyle](#fillstyle) | string \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | 指定绘制的填充色。
- 类型为string时,表示设置填充区域的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
+| [lineWidth](#linewidth) | number | 设置绘制线条的宽度。 |
+| [strokeStyle](#strokestyle) | string \| [CanvasGradient](ts-components-canvas-canvasgradient.md) \| [CanvasPattern](#canvaspattern) | 设置描边的颜色。
- 类型为string时,表示设置描边使用的颜色。
- 类型为CanvasGradient时,表示渐变对象,使用[createLinearGradient](#createlineargradient)方法创建。
- 类型为CanvasPattern时,使用[createPattern](#createpattern)方法创建。 |
+| [lineCap](#linecap) | CanvasLineCap | 指定线端点的样式,可选值为:
- 'butt':线端点以方形结束。
- 'round':线端点以圆形结束。
- 'square':线端点以方形结束,该样式下会增加一个长度和线段厚度相同,宽度是线段厚度一半的矩形。
- 默认值:'butt'。 |
+| [lineJoin](#linejoin) | CanvasLineJoin | 指定线段间相交的交点样式,可选值为:
- 'round':在线段相连处绘制一个扇形,扇形的圆角半径是线段的宽度。
- 'bevel':在线段相连处使用三角形为底填充, 每个部分矩形拐角独立。
- 'miter':在相连部分的外边缘处进行延伸,使其相交于一点,形成一个菱形区域,该属性可以通过设置miterLimit属性展现效果。
- 默认值:'miter'。 |
+| [miterLimit](#miterlimit) | number | 设置斜接面限制值,该值指定了线条相交处内角和外角的距离。
- 默认值:10。 |
+| [font](#font) | string | 设置文本绘制中的字体样式。
语法:ctx.font='font-size font-family'
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列。
语法:ctx.font='font-style font-weight font-size font-family'
- font-style(可选),用于指定字体样式,支持如下几种样式:'normal','italic'。
- font-weight(可选),用于指定字体的粗细,支持如下几种类型:'normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900。
- font-size(可选),指定字号和行高,单位只支持px。
- font-family(可选),指定字体系列,支持如下几种类型:'sans-serif', 'serif', 'monospace'。
- 默认值:'normal normal 14px sans-serif'。 |
+| [textAlign](#textalign) | CanvasTextAlign | 设置文本绘制中的文本对齐方式,可选值为:
- 'left':文本左对齐。
- 'right':文本右对齐。
- 'center':文本居中对齐。
- 'start':文本对齐界线开始的地方。
- 'end':文本对齐界线结束的地方。
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> ltr布局模式下'start'和'left'一致,rtl布局模式下'start'和'right'一致·。
- 默认值:'left'。 |
+| [textBaseline](#textbaseline) | CanvasTextBaseline | 设置文本绘制中的水平对齐方式,可选值为:
- 'alphabetic':文本基线是标准的字母基线。
- 'top':文本基线在文本块的顶部。
- 'hanging':文本基线是悬挂基线。
- 'middle':文本基线在文本块的中间。
- 'ideographic':文字基线是表意字基线;如果字符本身超出了alphabetic基线,那么ideograhpic基线位置在字符本身的底部。
- 'bottom':文本基线在文本块的底部。 与ideographic基线的区别在于ideographic基线不需要考虑下行字母。
- 默认值:'alphabetic'。 |
+| [globalAlpha](#globalalpha) | number | 设置透明度,0.0为完全透明,1.0为完全不透明。 |
+| [lineDashOffset](#linedashoffset) | number | 设置画布的虚线偏移量,精度为float。
- 默认值:0.0。 |
+| [globalCompositeOperation](#globalcompositeoperation) | string | 设置合成操作的方式。类型字段可选值有'source-over','source-atop','source-in','source-out','destination-over','destination-atop','destination-in','destination-out','lighter','copy','xor'。
- 默认值:'source-over'。 |
+| [shadowBlur](#shadowblur) | number | 设置绘制阴影时的模糊级别,值越大越模糊,精度为float。
- 默认值:0.0。 |
+| [shadowColor](#shadowcolor) | string | 设置绘制阴影时的阴影颜色。 |
+| [shadowOffsetX](#shadowoffsetx) | number | 设置绘制阴影时和原有对象的水平偏移值。 |
+| [shadowOffsetY](#shadowoffsety) | number | 设置绘制阴影时和原有对象的垂直偏移值。 |
+| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。
- 默认值:true。 |
+| imageSmoothingQuality | string | 用于设置图像平滑度,支持如下三种类型:'low', 'medium', 'high'。
- 默认值:'low'。 |
+
+> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+>fillStyle、shadowColor与 strokeStyle 中string类型格式为 'rgb(255, 255, 255)','rgba(255, 255, 255, 1.0)','\#FFFFFF'。
### fillStyle
@@ -143,7 +144,6 @@ struct StrokeStyleExample {
}
```
-
![zh-cn_image_0000001238712437](figures/zh-cn_image_0000001238712437.png)
@@ -445,6 +445,7 @@ struct LineDashOffset {
.onReady(() =>{
this.offContext.arc(100, 75, 50, 0, 6.28)
this.offContext.setLineDash([10,20])
+ this.offContext.lineDashOffset = 10.0;
this.offContext.stroke();
var image = this.offContext.transferToImageBitmap()
this.context.transferFromImageBitmap(image)
@@ -454,8 +455,8 @@ struct LineDashOffset {
.height('100%')
}
}
-```
+```
![zh-cn_image_0000001238712439](figures/zh-cn_image_0000001238712439.png)
@@ -700,7 +701,8 @@ fillRect(x: number, y: number, w: number, h: number): void
填充一个矩形。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ------ | ------ | ---- | ---- | ------------- |
| x | number | 是 | 0 | 指定矩形左上角点的x坐标。 |
@@ -708,8 +710,10 @@ fillRect(x: number, y: number, w: number, h: number): void
| width | number | 是 | 0 | 指定矩形的宽度。 |
| height | number | 是 | 0 | 指定矩形的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct FillRect {
@@ -744,7 +748,8 @@ strokeRect(x: number, y: number, w: number, h: number): void
绘制具有边框的矩形,矩形内部不填充。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ------ | ------ | ---- | ---- | ------------ |
| x | number | 是 | 0 | 指定矩形的左上角x坐标。 |
@@ -752,8 +757,10 @@ strokeRect(x: number, y: number, w: number, h: number): void
| width | number | 是 | 0 | 指定矩形的宽度。 |
| height | number | 是 | 0 | 指定矩形的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct StrokeRect {
@@ -787,7 +794,8 @@ clearRect(x: number, y: number, w: number, h: number): void
删除指定区域内的绘制内容。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------ | ------ | ---- | ---- | ------------- |
| x | number | 是 | 0 | 指定矩形上的左上角x坐标。 |
@@ -795,8 +803,10 @@ clearRect(x: number, y: number, w: number, h: number): void
| width | number | 是 | 0 | 指定矩形的宽度。 |
| height | number | 是 | 0 | 指定矩形的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ClearRect {
@@ -828,19 +838,23 @@ clearRect(x: number, y: number, w: number, h: number): void
### fillText
-fillText(text: string, x: number, y: number): void
+fillText(text: string, x: number, y: number, maxWidth?: number): void
绘制填充类文本。
-- 参数
+**参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ---- | ------ | ---- | ---- | --------------- |
| text | string | 是 | “” | 需要绘制的文本内容。 |
| x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
| y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+ | maxWidth | number | 否 | - | 指定文本允许的最大宽度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct FillText {
@@ -875,15 +889,19 @@ strokeText(text: string, x: number, y: number): void
绘制描边类文本。
-- 参数
+**参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | --------------- |
| text | string | 是 | “” | 需要绘制的文本内容。 |
| x | number | 是 | 0 | 需要绘制的文本的左下角x坐标。 |
| y | number | 是 | 0 | 需要绘制的文本的左下角y坐标。 |
+ | maxWidth | number | 否 | - | 需要绘制的文本的最大宽度 。|
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct StrokeText {
@@ -918,23 +936,40 @@ measureText(text: string): TextMetrics
该方法返回一个文本测算的对象,通过该对象可以获取指定文本的宽度值。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ---- | ------ | ---- | ---- | ---------- |
| text | string | 是 | "" | 需要进行测量的文本。 |
-- 返回值
+ **返回值:**
+
| 类型 | 说明 |
| ----------- | ------- |
| TextMetrics | 文本的尺寸信息 |
-- TextMetrics类型描述
- | 属性 | 类型 | 描述 |
- | ----- | ------ | ------- |
- | width | number | 字符串的宽度。 |
-
-- 示例
- ```
+**TextMetrics类型描述:**
+
+ | 属性 | 类型 | 描述 |
+ | ----- | ------ | ------- |
+ | width | number | 字符串的宽度。 |
+ | height | number | 字符串的高度。 |
+ | actualBoundingBoxAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的矩形边界顶部的距离,当前值为0。 |
+ | actualBoundingBoxDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的矩形边界底部的距离,当前值为0。 |
+ | actualBoundingBoxLeft | number | 平行于基线,从CanvasRenderingContext2D.textAlign 属性确定的对齐点到文本矩形边界左侧的距离,当前值为0。 |
+ | actualBoundingBoxRight | number | 平行于基线,从CanvasRenderingContext2D.textAlign 属性确定的对齐点到文本矩形边界右侧的距离,当前值为0。|
+ | alphabeticBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 alphabetic 基线的距离,当前值为0。|
+ | emHeightAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框中 em 方块顶部的距离,当前值为0。|
+ | emHeightDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框中 em 方块底部的距离,当前值为0。|
+ | fontBoundingBoxAscent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的所有字体的矩形最高边界顶部的距离,当前值为0。|
+ | fontBoundingBoxDescent | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到渲染文本的所有字体的矩形边界最底部的距离,当前值为0。|
+ | hangingBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 hanging 基线的距离,当前值为0。|
+ | ideographicBaseline | number | 从CanvasRenderingContext2D.textBaseline 属性标明的水平线到线框的 ideographic 基线的距离,当前值为0。|
+
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct MeasureText {
@@ -970,13 +1005,16 @@ stroke(path?: Path2D): void
进行边框绘制操作。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ---------------------------------------- | ---- | ---- | ------------ |
| path | [Path2D](ts-components-canvas-path2d.md) | 否 | null | 需要绘制的Path2D。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Stroke {
@@ -1013,8 +1051,10 @@ beginPath(): void
创建一个新的绘制路径。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct BeginPath {
@@ -1053,14 +1093,17 @@ moveTo(x: number, y: number): void
路径从当前点移动到指定点。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ---- | ------ | ---- | ---- | --------- |
| x | number | 是 | 0 | 指定位置的x坐标。 |
| y | number | 是 | 0 | 指定位置的y坐标。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct MoveTo {
@@ -1097,14 +1140,17 @@ lineTo(x: number, y: number): void
从当前点到指定点进行路径连接。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | --------- |
| x | number | 是 | 0 | 指定位置的x坐标。 |
| y | number | 是 | 0 | 指定位置的y坐标。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct LineTo {
@@ -1141,8 +1187,10 @@ closePath(): void
结束当前路径形成一个封闭路径。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ClosePath {
@@ -1177,18 +1225,27 @@ closePath(): void
### createPattern
-createPattern(image: ImageBitmap, repetition: string): CanvasPattern
+createPattern(image: ImageBitmap, repetition: string | null): CanvasPattern | null
通过指定图像和重复方式创建图片填充的模板。
-- 参数
+**参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---------- | ---------------------------------------- | ---- | ---- | ---------------------------------------- |
| image | [ImageBitmap](ts-components-canvas-imagebitmap.md) | 是 | null | 图源对象,具体参考ImageBitmap对象。 |
| repetition | string | 是 | “” | 设置图像重复的方式,取值为:'repeat'、'repeat-x'、 'repeat-y'、'no-repeat'。 |
-- 示例
- ```
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [CanvasPattern](#canvaspattern) | 通过指定图像和重复方式创建图片填充的模板对象。 |
+
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreatePattern {
@@ -1225,7 +1282,8 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number,
创建三次贝赛尔曲线的路径。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | -------------- |
| cp1x | number | 是 | 0 | 第一个贝塞尔参数的x坐标值。 |
@@ -1235,8 +1293,10 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number,
| x | number | 是 | 0 | 路径结束时的x坐标值。 |
| y | number | 是 | 0 | 路径结束时的y坐标值。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct BezierCurveTo {
@@ -1273,7 +1333,8 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
创建二次贝赛尔曲线的路径。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | ----------- |
| cpx | number | 是 | 0 | 贝塞尔参数的x坐标值。 |
@@ -1281,8 +1342,10 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
| x | number | 是 | 0 | 路径结束时的x坐标值。 |
| y | number | 是 | 0 | 路径结束时的y坐标值。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct QuadraticCurveTo {
@@ -1315,11 +1378,12 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
### arc
-arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
+arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
绘制弧线路径。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------------- | ------- | ---- | ----- | ---------- |
| x | number | 是 | 0 | 弧线圆心的x坐标值。 |
@@ -1327,10 +1391,12 @@ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number,
| radius | number | 是 | 0 | 弧线的圆半径。 |
| startAngle | number | 是 | 0 | 弧线的起始弧度。 |
| endAngle | number | 是 | 0 | 弧线的终止弧度。 |
- | anticlockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
+ | counterclockwise | boolean | 否 | false | 是否逆时针绘制圆弧。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Arc {
@@ -1366,7 +1432,8 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
依据圆弧经过的点和圆弧半径创建圆弧路径。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------ | ------ | ---- | ---- | --------------- |
| x1 | number | 是 | 0 | 圆弧经过的第一个点的x坐标值。 |
@@ -1375,8 +1442,10 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
| y2 | number | 是 | 0 | 圆弧经过的第二个点的y坐标值。 |
| radius | number | 是 | 0 | 圆弧的圆半径值。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct ArcTo {
@@ -1408,11 +1477,12 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
### ellipse
-ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
+ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void
在规定的矩形区域绘制一个椭圆。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ------------- | ------- | ---- | ----- | ----------------- |
| x | number | 是 | 0 | 椭圆圆心的x轴坐标。 |
@@ -1422,11 +1492,12 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number
| rotation | number | 是 | 0 | 椭圆的旋转角度,单位为弧度。 |
| startAngle | number | 是 | 0 | 椭圆绘制的起始点角度,以弧度表示。 |
| endAngle | number | 是 | 0 | 椭圆绘制的结束点角度,以弧度表示。 |
- | anticlockwise | boolean | 否 | false | 是否以逆时针方向绘制椭圆。 |
+ | counterclockwise | boolean | 否 | false | 是否以逆时针方向绘制椭圆。 |
-- 示例
+ **示例:**
- ```
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
@@ -1458,20 +1529,23 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number
### rect
-rect(x: number, y: number, width: number, height: number): void
+rect(x: number, y: number, w: number, h: number): void
创建矩形路径。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------ | ------ | ---- | ---- | ------------- |
| x | number | 是 | 0 | 指定矩形的左上角x坐标值。 |
| y | number | 是 | 0 | 指定矩形的左上角y坐标值。 |
- | width | number | 是 | 0 | 指定矩形的宽度。 |
- | height | number | 是 | 0 | 指定矩形的高度。 |
+ | w | number | 是 | 0 | 指定矩形的宽度。 |
+ | h | number | 是 | 0 | 指定矩形的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
@@ -1506,8 +1580,10 @@ fill(): void
对封闭路径进行填充。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Fill {
@@ -1542,8 +1618,10 @@ clip(): void
设置当前路径为剪切路径。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Clip {
@@ -1577,17 +1655,20 @@ clip(): void
### rotate
-rotate(rotate: number): void
+rotate(angle: number): void
针对当前坐标轴进行顺时针旋转。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------ | ------ | ---- | ---- | ---------------------------------------- |
- | rotate | number | 是 | 0 | 设置顺时针旋转的弧度值,可以通过Math.PI / 180将角度转换为弧度值。 |
+ | angle | number | 是 | 0 | 设置顺时针旋转的弧度值,可以通过Math.PI / 180将角度转换为弧度值。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Rotate {
@@ -1622,14 +1703,17 @@ scale(x: number, y: number): void
设置canvas画布的缩放变换属性,后续的绘制操作将按照缩放比例进行缩放。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | ----------- |
| x | number | 是 | 0 | 设置水平方向的缩放值。 |
| y | number | 是 | 0 | 设置垂直方向的缩放值。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Scale {
@@ -1661,29 +1745,32 @@ scale(x: number, y: number): void
### transform
-transform(scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number): void
+transform(a: number, b: number, c: number, d: number, e: number, f: number): void
transform方法对应一个变换矩阵,想对一个图形进行变化的时候,只要设置此变换矩阵相应的参数,对图形的各个定点的坐标分别乘以这个矩阵,就能得到新的定点的坐标。矩阵变换效果可叠加。
-> **说明:**
+> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 变换后的坐标计算方式(x和y为变换前坐标,x'和y'为变换后坐标):
>
> - x' = scaleX \* x + skewY \* y + translateX
>
> - y' = skewX \* x + scaleY \* y + translateY
-- 参数
+**参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---------- | ------ | ---- | ---- | -------- |
- | scaleX | number | 是 | 0 | 指定水平缩放值。 |
- | skewX | number | 是 | 0 | 指定水平倾斜值。 |
- | skewY | number | 是 | 0 | 指定垂直倾斜值。 |
- | scaleY | number | 是 | 0 | 指定垂直缩放值。 |
- | translateX | number | 是 | 0 | 指定水平移动值。 |
- | translateY | number | 是 | 0 | 指定垂直移动值。 |
-
-- 示例
- ```
+ | a | number | 是 | 0 |scaleX: 指定水平缩放值。 |
+ | b | number | 是 | 0 |skewX: 指定水平倾斜值。 |
+ | c | number | 是 | 0 |skewY: 指定垂直倾斜值。 |
+ | d | number | 是 | 0 |scaleY: 指定垂直缩放值。 |
+ | e | number | 是 | 0 |translateX: 指定水平移动值。 |
+ | f | number | 是 | 0 |translateY: 指定垂直移动值。 |
+
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Transform {
@@ -1720,22 +1807,25 @@ transform方法对应一个变换矩阵,想对一个图形进行变化的时
### setTransform
-setTransform(scaleX: number, skewX: number, skewY: number, scale: number, translateX: number, translateY: number): void
+setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
setTransfrom方法使用的参数和transform()方法相同,但setTransform()方法会重置现有的变换矩阵并创建新的变换矩阵。
-- 参数
+**参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---------- | ------ | ---- | ---- | -------- |
- | scaleX | number | 是 | 0 | 指定水平缩放值。 |
- | skewX | number | 是 | 0 | 指定水平倾斜值。 |
- | skewY | number | 是 | 0 | 指定垂直倾斜值。 |
- | scaleY | number | 是 | 0 | 指定垂直缩放值。 |
- | translateX | number | 是 | 0 | 指定水平移动值。 |
- | translateY | number | 是 | 0 | 指定垂直移动值。 |
-
-- 示例
- ```
+ | a | number | 是 | 0 |scaleX: 指定水平缩放值。 |
+ | b | number | 是 | 0 |skewX: 指定水平倾斜值。 |
+ | c | number | 是 | 0 |skewY: 指定垂直倾斜值。 |
+ | d | number | 是 | 0 |scaleY: 指定垂直缩放值。 |
+ | e | number | 是 | 0 |translateX: 指定水平移动值。 |
+ | f | number | 是 | 0 |translateY: 指定垂直移动值。 |
+
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct SetTransform {
@@ -1773,14 +1863,17 @@ translate(x: number, y: number): void
移动当前坐标系的原点。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | -------- |
| x | number | 是 | 0 | 设置水平平移量。 |
| y | number | 是 | 0 | 设置竖直平移量。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Translate {
@@ -1814,28 +1907,31 @@ translate(x: number, y: number): void
drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number): void
-drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number, dWidth: number, dHeight: number): void
+drawImage(image: ImageBitmap | PixelMap, dx: number, dy: number, dw: number, dh: number): void
-drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sWidth: number, sHeight: number, dx: number, dy: number, dWidth: number, dHeight: number):void
+drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number):void
进行图像绘制。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ------- | ---------------------------------------- | ---- | ---- | -------------------- |
| image | [ImageBitmap](ts-components-canvas-imagebitmap.md) 或[PixelMap](../apis/js-apis-image.md#pixelmap7)| 是 | null | 图片资源,请参考ImageBitmap或PixelMap。 |
| sx | number | 否 | 0 | 裁切源图像时距离源图像左上角的x坐标值。 |
| sy | number | 否 | 0 | 裁切源图像时距离源图像左上角的y坐标值。 |
- | sWidth | number | 否 | 0 | 裁切源图像时需要裁切的宽度。 |
- | sHeight | number | 否 | 0 | 裁切源图像时需要裁切的高度。 |
+ | sw | number | 否 | 0 | 裁切源图像时需要裁切的宽度。 |
+ | sh | number | 否 | 0 | 裁切源图像时需要裁切的高度。 |
| dx | number | 是 | 0 | 绘制区域左上角在x轴的位置。 |
| dy | number | 是 | 0 | 绘制区域左上角在y 轴的位置。 |
- | dWidth | number | 否 | 0 | 绘制区域的宽度。 |
- | dHeight | number | 否 | 0 | 绘制区域的高度。 |
+ | dw | number | 否 | 0 | 绘制区域的宽度。 |
+ | dh | number | 否 | 0 | 绘制区域的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct Index {
@@ -1866,34 +1962,44 @@ drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sWidth: number,
### createImageData
-createImageData(width: number, height: number): Object
+createImageData(sw: number, sh: number): ImageData
根据宽高创建ImageData对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认 | 描述 |
| ------ | ------ | ---- | ---- | ------------- |
- | width | number | 是 | 0 | ImageData的宽度。 |
- | height | number | 是 | 0 | ImageData的高度。 |
+ | sw | number | 是 | 0 | ImageData的宽度。 |
+ | sh | number | 是 | 0 | ImageData的高度。 |
### createImageData
-createImageData(imageData: ImageData): Object
+createImageData(imageData: ImageData): ImageData
根据已创建的ImageData对象创建新的ImageData对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认 | 描述 |
| --------- | ---------------------------------------- | ---- | ---- | ---------------- |
| imagedata | [ImageData](ts-components-canvas-imagebitmap.md) | 是 | null | 被复制的ImageData对象。 |
+ **返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象 |
+
### getPixelMap
getPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap
以当前canvas指定区域内的像素创建[PixelMap](../apis/js-apis-image.md#pixelmap7)对象。
-- 参数
+
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| -------- | -------- | -------- | -------- | -------- |
| sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
@@ -1901,13 +2007,21 @@ getPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap
| sw | number | 是 | 0 | 需要输出的区域的宽度。 |
| sh | number | 是 | 0 | 需要输出的区域的高度。 |
+**返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [PixelMap](../apis/js-apis-image.md#pixelmap7) | 新的PixelMap对象 |
+
+
### getImageData
-getImageData(sx: number, sy: number, sw: number, sh: number): Object
+getImageData(sx: number, sy: number, sw: number, sh: number): ImageData
以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagebitmap.md)对象。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | --------------- |
| sx | number | 是 | 0 | 需要输出的区域的左上角x坐标。 |
@@ -1915,14 +2029,23 @@ getImageData(sx: number, sy: number, sw: number, sh: number): Object
| sw | number | 是 | 0 | 需要输出的区域的宽度。 |
| sh | number | 是 | 0 | 需要输出的区域的高度。 |
+ **返回值:**
+
+ | 类型 | 说明 |
+ | ---------- | ---------------------------------------- |
+ | [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象 |
+
### putImageData
-putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number): void
+putImageData(imageData: Object, dx: number, dy: number): void
+
+putImageData(imageData: Object, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth?: number, dirtyHeight: number): void
使用[ImageData](ts-components-canvas-imagebitmap.md)数据填充新的矩形区域。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ----------- | ------ | ---- | ------------ | ----------------------------- |
| imagedata | Object | 是 | null | 包含像素值的ImageData对象。 |
@@ -1933,8 +2056,10 @@ putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?
| dirtyWidth | number | 否 | imagedata的宽度 | 源图像数据矩形裁切范围的宽度。 |
| dirtyHeight | number | 否 | imagedata的高度 | 源图像数据矩形裁切范围的高度。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct PutImageData {
@@ -1968,6 +2093,225 @@ putImageData(imageData: Object, dx: number, dy: number, dirtyX?: number, dirtyY?
![zh-cn_image_0000001194192464](figures/zh-cn_image_0000001194192464.png)
+### setLineDash
+
+setLineDash(segments: number[]): void
+
+设置画布的虚线样式。
+
+**参数:**
+
+| 参数 | 类型 | 描述 |
+| -------- | ----- | -------------------- |
+| segments | number[] | 描述线段如何交替和线段间距长度的数组。 |
+
+**示例:**
+
+ ```ts
+@Entry
+@Component
+struct SetLineDash {
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)
+
+ build() {
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
+ Canvas(this.context)
+ .width('100%')
+ .height('100%')
+ .backgroundColor('#ffff00')
+ .onReady(() =>{
+ this.offContext.arc(100, 75, 50, 0, 6.28)
+ this.offContext.setLineDash([10,20])
+ this.offContext.stroke();
+ var image = this.offContext.transferToImageBitmap()
+ this.context.transferFromImageBitmap(image)
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+ ```
+ ![zh-cn_image_000000127777772](figures/zh-cn_image_000000127777772.png)
+
+
+### getLineDash
+
+getLineDash(): number[]
+
+获得当前画布的虚线样式。
+
+**返回值:**
+
+| 类型 | 说明 |
+| ----- | ------------------------ |
+| number[] | 返回数组,该数组用来描述线段如何交替和间距长度。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct GetLineDash {
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, 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)
+ this.offContext.arc(100, 75, 50, 0, 6.28)
+ this.offContext.setLineDash([10,20])
+ this.offContext.stroke();
+ let res = this.offContext.getLineDash()
+ var image = this.offContext.transferToImageBitmap()
+ this.context.transferFromImageBitmap(image)
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
+ ```
+
+
+### transferFromImageBitmap
+
+transferFromImageBitmap(bitmap: ImageBitmap): void
+
+显示给定的ImageBitmap对象。
+
+**参数:**
+
+| 参数 | 类型 | 描述 |
+| ------ | ----------- | ------------------ |
+| bitmap | [ImageData](ts-components-canvas-imagebitmap.md) | 待显示的ImageBitmap对象。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct GetLineDash {
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)
+
+ build() {
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
+ Canvas(this.context)
+ .width('100%')
+ .height('100%')
+ .backgroundColor('#ffff00')
+ .onReady(() =>{
+ this.offContext.fillRect(0, 0, 200, 200)
+ var image = this.offContext.transferToImageBitmap()
+ this.context.transferFromImageBitmap(image)
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
+ ```
+ ![zh-cn_image_000000127777773](figures/zh-cn_image_000000127777773.png)
+
+### toDataURL
+
+toDataURL(type?: string, quality?: number): string
+
+生成一个包含图片展示的URL。
+
+**参数:**
+
+| 参数名 | 参数类型 | 必填 | 描述 |
+| ------- | ------ | ---- | ---------------------------------------- |
+| type | string | 否 | 可选参数,用于指定图像格式,默认格式为image/png。 |
+| quality | number | 否 | 在指定图片格式为image/jpeg或image/webp的情况下,可以从0到1的区间内选择图片的质量。如果超出取值范围,将会使用默认值0.92。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------ | --------- |
+| string | 图像的URL地址。 |
+
+**示例:**
+
+ ```ts
+ // xxx.ets
+@Entry
+@Component
+struct ToDataURL {
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)
+
+ build() {
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
+ Canvas(this.context)
+ .width('100%')
+ .height('100%')
+ .backgroundColor('#ffff00')
+ .onReady(() =>{
+ var dataURL = this.offContext.toDataURL();
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+}
+ ```
+
+
+### transferToImageBitmap
+
+transferToImageBitmap(): ImageBitmap
+
+在离屏画布最近渲染的图像上创建一个ImageBitmap对象。
+
+**返回值:**
+
+| 类型 | 说明 |
+| ---------------------------------------- | --------------- |
+| [ImageData](ts-components-canvas-imagebitmap.md)| 存储离屏画布上渲染的像素数据。 |
+
+
+ **示例:**
+
+ ```ts
+ // xxx.ets
+ @Entry
+ @Component
+ struct CanvasExample {
+ private settings: RenderingContextSettings = new RenderingContextSettings(true)
+ private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
+ private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings)
+ build() {
+ Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
+ Canvas(this.context)
+ .width('100%')
+ .height('100%')
+ .backgroundColor('#ffff00')
+ .onReady(() =>{
+ this.offContext.restore()
+ var image = this.offContext.transferToImageBitmap()
+ this.context.transferFromImageBitmap(image)
+ })
+ }
+ .width('100%')
+ .height('100%')
+ }
+ }
+ ```
### restore
@@ -1975,8 +2319,10 @@ restore(): void
对保存的绘图上下文进行恢复。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
@@ -2008,8 +2354,10 @@ save(): void
对当前的绘图上下文进行保存。
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CanvasExample {
@@ -2041,7 +2389,8 @@ createLinearGradient(x0: number, y0: number, x1: number, y1: number): void
创建一个线性渐变色。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | -------- |
| x0 | number | 是 | 0 | 起点的x轴坐标。 |
@@ -2049,8 +2398,10 @@ createLinearGradient(x0: number, y0: number, x1: number, y1: number): void
| x1 | number | 是 | 0 | 终点的x轴坐标。 |
| y1 | number | 是 | 0 | 终点的y轴坐标。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreateLinearGradient {
@@ -2090,7 +2441,8 @@ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number,
创建一个径向渐变色。
-- 参数
+ **参数:**
+
| 参数 | 类型 | 必填 | 默认值 | 描述 |
| ---- | ------ | ---- | ---- | ----------------- |
| x0 | number | 是 | 0 | 起始圆的x轴坐标。 |
@@ -2100,8 +2452,10 @@ createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number,
| y1 | number | 是 | 0 | 终点圆的y轴坐标。 |
| r1 | number | 是 | 0 | 终点圆的半径。必须为非负且有限的。 |
-- 示例
- ```
+ **示例:**
+
+ ```ts
+ // xxx.ets
@Entry
@Component
struct CreateRadialGradient {