Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
1d2ab0a1
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
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看板
提交
1d2ab0a1
编写于
5月 12, 2023
作者:
L
limeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OffscreenCanvas文档
Signed-off-by:
N
limeng
<
limeng208@huawei.com
>
上级
d2e41fa2
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
201 addition
and
0 deletion
+201
-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/ts-components-offscreencanvas.md
...n-dev/reference/arkui-ts/ts-components-offscreencanvas.md
+201
-0
未找到文件。
zh-cn/application-dev/reference/arkui-ts/figures/offscreen_canvas.png
0 → 100644
浏览文件 @
1d2ab0a1
12.9 KB
zh-cn/application-dev/reference/arkui-ts/ts-components-offscreencanvas.md
0 → 100644
浏览文件 @
1d2ab0a1
# OffscreenCanvas
提供离屏画布组件,用于自定义绘制图形。
> **说明:**
>
> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
## 子组件
不支持。
## 接口
OffscreenCanvas(width: number, height: number)
从API version 9开始,该接口支持在ArkTS卡片中使用。
**参数:**
| 参数名 | 参数类型 | 必填 | 默认值 | 参数描述 |
| ------ | -------- | ---- | ------ | -------------------------- |
| width | number | 是 | 0 | 离屏画布的宽度,单位为vp。 |
| height | number | 是 | 0 | 离屏画布的高度,单位为vp。 |
## 属性
除支持
[
通用属性
](
ts-universal-attributes-size.md
)
外,还支持以下属性:
| 名称 | 类型 | 默认值 | 描述 |
| ------ | ------ | ------ | ------------------------------------------------------------ |
| width | number | 0 | 离屏画布的宽度,单位为vp。从API version 9开始,该接口支持在ArkTS卡片中使用。 |
| height | number | 0 | 离屏画布的高度,单位为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
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
600
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
Column
()
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#ffff00
'
)
.
onReady
(()
=>
{
console
.
log
(
this
.
offscreenCanvas
.
width
.
toString
())
})
}
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
}
}
```
### height
```
ts
// xxx.ets
@
Entry
@
Component
struct
OffscreenCanvasPage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
600
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Row
,
alignItems
:
ItemAlign
.
Start
,
justifyContent
:
FlexAlign
.
Start
})
{
Column
()
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#ffff00
'
)
.
onReady
(()
=>
{
console
.
log
(
this
.
offscreenCanvas
.
height
.
toString
())
})
}
}.
width
(
'
100%
'
).
height
(
'
100%
'
)
}
}
```
## 方法
### transferToImageBitmap
transferToImageBitmap(): ImageBitmap
从离屏画布中最近渲染的图像创建一个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
(
600
,
600
)
build
()
{
Flex
({
direction
:
FlexDirection
.
Column
,
alignItems
:
ItemAlign
.
Center
,
justifyContent
:
FlexAlign
.
Center
})
{
Canvas
(
this
.
context
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
.
backgroundColor
(
'
#ffff00
'
)
.
onReady
(()
=>
{
var
imageData
=
this
.
offCanvas
.
transferToImageBitmap
()
this
.
context
.
transferFromImageBitmap
(
imageData
)
})
}
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
}
}
```
### getContext<sup>10+</sup>
getContext(contextType: "2d", option?: RenderingContextSettings): OffscreenCanvasRenderingContext2D
返回离屏画布的绘图上下文。
**参数:**
| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ----------- | ------------------------------------------------------------ | ---- | ------ | ------------------------------------------------------------ |
| contextType | string | 是 | "2d" | 离屏画布绘图上下文的类型。 |
| option |
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
| 否 | - | 见
[
RenderingContextSettings
](
ts-canvasrenderingcontext2d.md#renderingcontextsettings
)
。 |
**返回值:**
| 类型 | 描述 |
| ------------------------------------------------------------ | ---------------------- |
|
[
OffscreenCanvasRenderingContext2D
](
ts-offscreencanvasrenderingcontext2d.md
)
| 离屏画布的绘图上下文。 |
**示例:**
```
ts
@
Entry
@
Component
struct
OffscreenCanvasExamplePage
{
private
settings
:
RenderingContextSettings
=
new
RenderingContextSettings
(
true
);
private
context
:
CanvasRenderingContext2D
=
new
CanvasRenderingContext2D
(
this
.
settings
);
private
offscreenCanvas
:
OffscreenCanvas
=
new
OffscreenCanvas
(
600
,
600
)
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
=
offContext
.
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录