Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
134aa020
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
134aa020
编写于
5月 27, 2023
作者:
L
limeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify by the comments
Signed-off-by:
N
limeng
<
limeng208@huawei.com
>
上级
df3d3f67
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
50 addition
and
26 deletion
+50
-26
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_height.png
...ev/reference/arkui-ts/figures/offscreen_canvas_height.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_transferToImageBitmap.png
...kui-ts/figures/offscreen_canvas_transferToImageBitmap.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_width.png
...dev/reference/arkui-ts/figures/offscreen_canvas_width.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/ts-components-offscreencanvas.md
...n-dev/reference/arkui-ts/ts-components-offscreencanvas.md
+50
-26
未找到文件。
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_height.png
0 → 100644
浏览文件 @
134aa020
2.5 KB
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_transferToImageBitmap.png
0 → 100644
浏览文件 @
134aa020
7.2 KB
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_width.png
0 → 100644
浏览文件 @
134aa020
2.5 KB
zh-cn/application-dev/reference/arkui-ts/ts-components-offscreencanvas.md
浏览文件 @
134aa020
# OffscreenCanvas
提供离屏画布组件,用于自定义绘制图形。
OffscreenCanvas组件用于自定义绘制图形。
使用Canvas组件或Canvas API时,渲染、动画和用户交互通常发生在应用程序的主线程上。与画布动画和渲染相关的计算可能会对应用程序性能产生重大影响。OffscreenCanvas提供了一个可以在屏幕外渲染的画布,这样可以在单独的线程中运行一些任务,从而避免主线程上的繁重工作。
> **说明:**
>
...
...
@@ -18,10 +20,10 @@ OffscreenCanvas(width: number, height: number)
**参数:**
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| ------ | -------- | ---- | ------ | -------------------------- |
| width | number | 是 | 0 |
离屏画布
的宽度,单位为vp。 |
| height | number | 是 | 0 |
离屏画布
的高度,单位为vp。 |
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述
|
| ------ | -------- | ---- | ------ | --------------------------
-----------
|
| width | number | 是 | 0 |
OffscreenCanvas组件
的宽度,单位为vp。 |
| height | number | 是 | 0 |
OffscreenCanvas组件
的高度,单位为vp。 |
## 属性
...
...
@@ -29,8 +31,8 @@ OffscreenCanvas(width: number, height: number)
| 名称 | 类型 | 默认值 | 描述 |
| ------ | ------ | ------ | ------------------------------------------------------------ |
| width | number | 0 |
离屏画布
的宽度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| height | number | 0 |
离屏画布
的高度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| width | number | 0 |
OffscreenCanvas组件
的宽度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| height | number | 0 |
OffscreenCanvas组件
的高度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
### width
...
...
@@ -41,7 +43,7 @@ OffscreenCanvas(width: number, height: number)
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
off
screenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
6
00
)
private
off
Canvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
200
,
3
00
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
...
...
@@ -49,9 +51,14 @@ struct OffscreenCanvasPage {
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#
ffff00
'
)
.
backgroundColor
(
'
#
FFFFFF
'
)
.
onReady
(()
=>
{
console
.
log
(
this
.
offscreenCanvas
.
width
.
toString
())
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
fillStyle
=
'
#CDCDCD
'
offContext
.
fillRect
(
0
,
0
,
offCanvas
.
width
,
150
)
var
image
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
setTransform
(
1
,
0
,
0
,
1
,
50
,
200
)
this
.
context
.
transferFromImageBitmap
(
image
)
})
}
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
...
...
@@ -59,6 +66,8 @@ struct OffscreenCanvasPage {
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_width.png
)
### height
```
ts
...
...
@@ -68,7 +77,7 @@ struct OffscreenCanvasPage {
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
off
screenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
6
00
)
private
off
Canvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
200
,
3
00
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
...
...
@@ -76,9 +85,14 @@ struct OffscreenCanvasPage {
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#
ffff00
'
)
.
backgroundColor
(
'
#
FFFFFF
'
)
.
onReady
(()
=>
{
console
.
log
(
this
.
offscreenCanvas
.
height
.
toString
())
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
fillStyle
=
'
#CDCDCD
'
offContext
.
fillRect
(
0
,
0
,
100
,
offCanvas
.
height
)
var
image
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
setTransform
(
1
,
0
,
0
,
1
,
50
,
200
)
this
.
context
.
transferFromImageBitmap
(
image
)
})
}
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
...
...
@@ -86,13 +100,15 @@ struct OffscreenCanvasPage {
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_height.png
)
## 方法
### transferToImageBitmap
transferToImageBitmap(): ImageBitmap
从
离屏画布
中最近渲染的图像创建一个ImageBitmap对象。
从
OffscreenCanvas组件
中最近渲染的图像创建一个ImageBitmap对象。
从API version 9开始,该接口支持在ArkTS卡片中使用。
...
...
@@ -111,20 +127,25 @@ transferToImageBitmap(): ImageBitmap
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
)
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
)
private
offCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
6
00
)
private
offCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
300
,
5
00
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Column
,
alignItems
:
ItemAlign
.
Center
,
justifyContent
:
FlexAlign
.
Center
})
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#ffff00
'
)
.
borderWidth
(
5
)
.
borderColor
(
Color
.
Green
)
.
backgroundColor
(
'
#FFFFFF
'
)
.
onReady
(()
=>
{
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
font
=
'
70px sans-serif
'
offContext
.
fillStyle
=
'
#CDCDCD
'
offContext
.
fillRect
(
0
,
0
,
300
,
500
)
offContext
.
fillStyle
=
'
#000000
'
offContext
.
font
=
'
70px serif bold
'
offContext
.
fillText
(
"
Offscreen : Hello World!
"
,
20
,
60
)
var
image
Data
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
transferFromImageBitmap
(
image
Data
)
var
image
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
transferFromImageBitmap
(
image
)
})
}
.
width
(
'
100%
'
)
...
...
@@ -132,24 +153,27 @@ struct OffscreenCanvasPage {
}
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_transferToImageBitmap.png
)
### getContext<sup>10+</sup>
getContext(contextType: "2d", option?: RenderingContextSettings): OffscreenCanvasRenderingContext2D
返回
离屏画布
的绘图上下文。
返回
OffscreenCanvas组件
的绘图上下文。
**参数:**
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ----------- | ------------------------------------------------------------ | ---- | ------ | ------------------------------------------------------------ |
| contextType | string | 是 | "2d" |
离屏画布绘图上下文的类型。
|
| contextType | string | 是 | "2d" |
OffscreenCanvas组件绘图上下文的类型。
|
| option |
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
| 否 | - | 见
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
。 |
**返回值:**
| 类型 | 描述 |
| ------------------------------------------------------------ | ---------------------- |
|
[
OffscreenCanvasRenderingContext2D
](
ts-offscreencanvasrenderingcontext2d.md
)
|
离屏画布
的绘图上下文。 |
| 类型 | 描述
|
| ------------------------------------------------------------ | ----------------------
-----------
|
|
[
OffscreenCanvasRenderingContext2D
](
ts-offscreencanvasrenderingcontext2d.md
)
|
OffscreenCanvas组件
的绘图上下文。 |
**示例:**
...
...
@@ -159,7 +183,7 @@ getContext(contextType: "2d", option?: RenderingContextSettings): OffscreenCanva
struct
OffscreenCanvasExamplePage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
6
00
)
private
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
8
00
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
...
...
@@ -200,5 +224,5 @@ struct OffscreenCanvasExamplePage {
}
```
!
[
zh-cn_image_0000001194032666
](
figures/offscreen_canvas.png
)
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas.png
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录