Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
e425e7ce
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录