Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
e425e7ce
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
156
Star
2
Fork
37
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
13
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
13
合并请求
13
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
e425e7ce
编写于
7月 30, 2024
作者:
H
hdx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
canvas: 增加 createCanvasContextAsync 示例
上级
b2a38f4e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
3 deletion
+31
-3
docs/component/canvas.md
docs/component/canvas.md
+31
-3
未找到文件。
docs/component/canvas.md
浏览文件 @
e425e7ce
...
...
@@ -4,7 +4,7 @@
<!-- UTSCOMJSON.canvas.compatibility -->
App平台
目
前没有完整的canvas组件,但
App平台
4.25之
前没有完整的canvas组件,但
*
每个view,都提供了
[
draw API
](
../dom/drawablecontext.md
)
,可以高性能的画各种形状、写字。这组API与web的canvas api接近但不同。
*
截图或海报需求,无需像webview那样通过canvas中转,app平台view直接提供截图API,
[
takesnapshot
](
../dom/element.md#takesnapshot
)
。
*
使用web-view中的canvas也是一种方案,uvue页面里的web-view组件可以和uvue页面里的uts代码双向通信。
...
...
@@ -41,17 +41,45 @@ uni-app x 中废弃了老版方案,使用了 W3C 规范和微信小程序的
注意:新版规范需要开发者根据自己的场景手动处理高清屏问题。
**异步方式**
```
html
<template>
<canvas
id=
"canvas"
></canvas>
</template>
<script
setup
>
// HBuilderX 4.25
// 异步调用方式, 跨平台写法
uni
.
createCanvasContextAsync
({
id
:
'
canvas
'
,
component
:
this
,
success
:
(
context
:
CanvasContext
)
=>
{
const
canvasContext
=
context
.
getContext
(
'
2d
'
)
!
;
const
canvas
=
canvasContext
.
canvas
;
// 处理高清屏逻辑
const
dpr
=
uni
.
getDeviceInfo
().
devicePixelRatio
??
1
;
canvas
.
width
=
canvas
.
offsetWidth
*
dpr
;
canvas
.
height
=
canvas
.
offsetHeight
*
dpr
;
canvasContext
.
scale
(
dpr
,
dpr
);
// 仅需调用一次,当调用 reset 方法后需要再次 scale
}
})
</script>
```
**同步方式**
```
html
<template>
<canvas
id=
"canvas"
></canvas>
</template>
<script
setup
>
//
获取 canvas element
//
同步调用方式,仅支持 app/web
const
canvas
=
uni
.
getElementById
(
"
canvas
"
)
as
UniCanvasElement
const
context
=
canvas
.
getContext
(
"
2d
"
)
!
;
// 处理高清屏逻辑
const
dpr
=
uni
.
get
SystemInfoSync
().
pixelRatio
;
const
dpr
=
uni
.
get
DeviceInfo
().
devicePixelRatio
??
1
;
canvas
.
width
=
canvas
.
offsetWidth
*
dpr
;
canvas
.
height
=
canvas
.
offsetHeight
*
dpr
;
context
.
scale
(
dpr
,
dpr
);
// 仅需调用一次,当调用 reset 方法后需要再次 scale
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录