Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
9d8ce59e
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看板
未验证
提交
9d8ce59e
编写于
6月 01, 2023
作者:
O
openharmony_ci
提交者:
Gitee
6月 01, 2023
浏览文件
操作
浏览文件
下载
差异文件
!18165 新增OffscreenCanvas文档
Merge pull request !18165 from limeng/OffscreenCanvas
上级
784a4a77
025ec43c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
232 addition
and
0 deletion
+232
-0
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas.png
...ation-dev/reference/arkui-ts/figures/offscreen_canvas.png
+0
-0
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
+232
-0
未找到文件。
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas.png
0 → 100644
浏览文件 @
9d8ce59e
12.9 KB
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_height.png
0 → 100644
浏览文件 @
9d8ce59e
2.5 KB
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_transferToImageBitmap.png
0 → 100644
浏览文件 @
9d8ce59e
7.2 KB
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas_width.png
0 → 100644
浏览文件 @
9d8ce59e
2.5 KB
zh-cn/application-dev/reference/arkui-ts/ts-components-offscreencanvas.md
0 → 100644
浏览文件 @
9d8ce59e
# OffscreenCanvas
OffscreenCanvas组件用于自定义绘制图形。
使用
[
Canvas
](
ts-components-canvas-canvas.md
)
组件或
[
Canvas API
](
ts-canvasrenderingcontext2d.md
)
时,渲染、动画和用户交互通常发生在应用程序的主线程上,与画布动画和渲染相关的计算可能会影响应用程序性能。OffscreenCanvas提供了一个可以在屏幕外渲染的画布,这样可以在单独的线程中运行一些任务,从而避免影响应用程序主线程性能。
> **说明:**
>
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 子组件
不支持。
## 接口
OffscreenCanvas(width: number, height: number)
从API version 9开始,该接口支持在ArkTS卡片中使用。
**参数:**
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| ------ | -------- | ---- | ------ | ------------------------------------- |
| width | number | 是 | 0 | OffscreenCanvas组件的宽度,单位为vp。 |
| height | number | 是 | 0 | OffscreenCanvas组件的高度,单位为vp。 |
## 属性
除支持
[
通用属性
](
ts-universal-attributes-size.md
)
外,还支持以下属性:
| 名称 | 类型 | 默认值 | 描述 |
| ------ | ------ | ------ | ------------------------------------------------------------ |
| width | number | 0 | OffscreenCanvas组件的宽度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| height | number | 0 | OffscreenCanvas组件的高度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
### width
```
ts
// xxx.ets
@
Entry
@
Component
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
200
,
300
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
Column
()
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
borderWidth
(
5
)
.
borderColor
(
'
#00FF00
'
)
.
backgroundColor
(
'
#FFFFFF
'
)
.
onReady
(()
=>
{
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
fillStyle
=
'
#CDCDCD
'
offContext
.
fillRect
(
0
,
0
,
this
.
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%
'
)
}
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_width.png
)
### height
```
ts
// xxx.ets
@
Entry
@
Component
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
200
,
300
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
Column
()
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
borderWidth
(
5
)
.
borderColor
(
'
#00FF00
'
)
.
backgroundColor
(
'
#FFFFFF
'
)
.
onReady
(()
=>
{
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
fillStyle
=
'
#CDCDCD
'
offContext
.
fillRect
(
0
,
0
,
100
,
this
.
offCanvas
.
height
)
var
image
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
setTransform
(
1
,
0
,
0
,
1
,
50
,
200
)
this
.
context
.
transferFromImageBitmap
(
image
)
})
}
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
}
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_height.png
)
## 方法
### transferToImageBitmap
transferToImageBitmap(): ImageBitmap
从OffscreenCanvas组件中最近渲染的图像创建一个ImageBitmap对象。
从API version 9开始,该接口支持在ArkTS卡片中使用。
**返回值:**
| 类型 | 描述 |
| -------------------------------------------------- | ----------------------- |
|
[
ImageBitmap
](
ts-components-canvas-imagebitmap.md
)
| 创建的ImageBitmap对象。 |
**示例:**
```
ts
// xxx.ets
@
Entry
@
Component
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
)
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
)
private
offCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
300
,
500
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Column
,
alignItems
:
ItemAlign
.
Center
,
justifyContent
:
FlexAlign
.
Center
})
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
borderWidth
(
5
)
.
borderColor
(
'
#00FF00
'
)
.
backgroundColor
(
'
#FFFFFF
'
)
.
onReady
(()
=>
{
var
offContext
=
this
.
offCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
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
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
transferFromImageBitmap
(
image
)
})
}
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
}
}
```
![
zh-cn_image_0000001194032666
](
figures/offscreen_canvas_transferToImageBitmap.png
)
### getContext<sup>10+</sup>
getContext(contextType: "2d", option?: RenderingContextSettings): OffscreenCanvasRenderingContext2D
返回OffscreenCanvas组件的绘图上下文。
**参数:**
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ----------- | ------------------------------------------------------------ | ---- | ------ | ------------------------------------------------------------ |
| contextType | string | 是 | "2d" | OffscreenCanvas组件绘图上下文的类型。 |
| option |
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
| 否 | - | 见
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
。 |
**返回值:**
| 类型 | 描述 |
| ------------------------------------------------------------ | --------------------------------- |
|
[
OffscreenCanvasRenderingContext2D
](
ts-offscreencanvasrenderingcontext2d.md
)
| OffscreenCanvas组件的绘图上下文。 |
**示例:**
```
ts
@
Entry
@
Component
struct
OffscreenCanvasExamplePage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
800
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
Column
()
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#FFFFFF
'
)
.
onReady
(()
=>
{
var
offContext
=
this
.
offscreenCanvas
.
getContext
(
"
2d
"
,
this
.
settings
)
offContext
.
font
=
'
70px sans-serif
'
offContext
.
fillText
(
"
Offscreen : Hello World!
"
,
20
,
60
)
offContext
.
fillStyle
=
"
#0000ff
"
offContext
.
fillRect
(
230
,
350
,
50
,
50
)
offContext
.
fillStyle
=
"
#EE0077
"
offContext
.
translate
(
70
,
70
)
offContext
.
fillRect
(
230
,
350
,
50
,
50
)
offContext
.
fillStyle
=
"
#77EE0077
"
offContext
.
translate
(
-
70
,
-
70
)
offContext
.
fillStyle
=
"
#00ffff
"
offContext
.
rotate
(
45
*
Math
.
PI
/
180
);
offContext
.
fillRect
(
180
,
120
,
50
,
50
);
offContext
.
rotate
(
-
45
*
Math
.
PI
/
180
);
offContext
.
beginPath
()
offContext
.
moveTo
(
10
,
150
)
offContext
.
bezierCurveTo
(
20
,
100
,
200
,
100
,
200
,
20
)
offContext
.
stroke
()
offContext
.
fillStyle
=
'
#FF00FF
'
offContext
.
fillRect
(
100
,
100
,
60
,
60
)
var
imageData
=
this
.
offscreenCanvas
.
transferToImageBitmap
()
this
.
context
.
transferFromImageBitmap
(
imageData
)
})
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
}
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
}
}
```
![
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录