问题描述
我在canvas中有多个图片需要旋转一定的角度 但是使用rotate()方法好像是让画布进行旋转,怎么才能让图片旋转
相关代码
ctx.save()
ctx.beginPath()
ctx.rect(item.x * this.backWidth / 375 / 2, item.y * this.backWidth / 375 / 2, item.width * this.backWidth / 375 / 2, item.height * this.backWidth / 375 / 2)
ctx.scale(item.sc, item.sc)
ctx.clip()
if (item.angle != 0) {
ctx.translate(item.imgx + item.imgw * this.backWidth / 375 / 2 / 2, item.imgy + item.imgh * this.backWidth / 375 / 2 / 2)//图片中心点
ctx.rotate(item.angle)//旋转角度
}
ctx.drawImage(item.pic, (item.x + (item.imgx - 0)) * this.backWidth / 375 / 2, (item.y + (item.imgy - 0)) * this.backWidth /375 / 2, item.imgw * this.backWidth / 375 / 2, item.imgh * this.backWidth / 375 / 2)
ctx.translate(0, 0)
ctx.closePath()
多个图片,每个图片有自己的旋转和缩放的话,就把旋转缩放代码放在
save()
和restore()
中间,确保每次都是初始的绘制状态,才能正确旋转缩放。这里给个封装好的函数,可以做类似 css 的
translate
、rotate
、scale
变换,支持设置变换原点,你可以改一下属性名直接使用使用例子
Pen: https://codepen.io/mannix-zho...