开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
导航栏
tabbar
路由
交互反馈
下拉刷新
联系人
选择城市
选择日期
动画
画布
canvas
canvasrenderingcontext2d
canvaspattern
offscreencanvas
旧版接口(停止更新)
地图
计算路径
键盘
滚动
节点查询
选项选择器
级联选择
设置窗口背景
设置页面是否支持下拉
字体
跳转
多媒体
缓存
文件
位置
网络
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 界面 > 画布 > canvasrenderingcontext2d > canvasrenderingcontext2d.scale
收藏
订阅更新
我的文档
设置

canvasrenderingcontext2d.scale(number x, number y)

基础库  或更高版本; 若版本较低,建议采取 兼容处理

主体: 企业支付宝小程序个人支付宝小程序

为画布添加缩放变换,影响接下来绘制的内容。多次调用此接口,缩放倍数会相乘。

默认情况下,画布中的一个单位实际大小为一个像素。缩放变换会改变一个单位的大小。例如,canvasrenderingcontext2d.scale(2, 2)会将画布的单位同时在垂直和水平方向上放大 2 倍,此时画布中的一个单位的大小为 2 像素,之后绘制内容的大小将变为默认情况的两倍。

效果示例

代码示例运行效果

number x

横向缩放倍数 (0.5 = 50%,1 = 100%,2 = 200%)。负值会沿 y 轴翻转像素。

number y

纵向缩放倍数 (0.5 = 50%,1 = 100%,2 = 200%)。负值会沿 x 轴翻转像素。
一般使用
沿 y 轴翻转
沿 x 轴翻转
.js
.axml
page({
    oncanvasready() {
        my.createselectorquery().select('#canvas').node().exec((res) => {
            const canvas = res[0].node
            const ctx = canvas.getcontext('2d')
            ctx.font = '48px serif'
            ctx.strokerect(10, 10, 30, 20)
            ctx.scale(2, 2)
            ctx.strokerect(10, 10, 30, 20)
            
            ctx.scale(2, 2)
            ctx.strokerect(10, 10, 30, 20)
        })
    }
})
<canvas id="canvas" type="2d" onready="oncanvasready">canvas>
.js
.axml
page({
    oncanvasready() {
        my.createselectorquery().select('#canvas').node().exec((res) => {
            const canvas = res[0].node
            const ctx = canvas.getcontext('2d')
            ctx.font = '48px serif'
            // 移动坐标系,使负半轴与正半轴各占屏幕的一半
            ctx.translate(150, 10)
            ctx.moveto(0, 0)
            ctx.lineto(0, 300)
            ctx.moveto(-150, 0)
            ctx.lineto(150, 0)
            ctx.stroke()
            // 绘制文字
            ctx.filltext('hello', 10, 90)
            // 翻转
            ctx.scale(-1, 1)
            
            // 在同样的坐标绘制文字
            ctx.filltext('hello', 10, 90)
        })
    }
})
<canvas id="canvas" type="2d" onready="oncanvasready">canvas>
代码示例执行效果
.js
.axml
page({
    oncanvasready() {
        my.createselectorquery().select('#canvas').node().exec((res) => {
            const canvas = res[0].node
            const ctx = canvas.getcontext('2d')
            ctx.font = '48px serif'
            // 移动坐标系,使负半轴与正半轴各占屏幕的一半
            ctx.translate(0, 120)
            ctx.moveto(0, 0)
            ctx.lineto(0, 300)
            ctx.moveto(-150, 0)
            ctx.lineto(150, 0)
            ctx.stroke()
            // 绘制文字
            ctx.filltext('hello', 10, 90)
            // 翻转
            ctx.scale(1, -1)
            
            // 在同样的坐标绘制文字
            ctx.filltext('hello', 10, 90)
        })
    }
})
<canvas id="canvas" type="2d" onready="oncanvasready">canvas>
代码示例执行效果
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图