canvas如何scale已经画过的东西

现在我又一个长800,宽400得canvas区域,然后手写了几个字在上面,然后我如何把写过的字和画布一起缩放到原来得1/10?

ctx.scale只能缩放画布

阅读 3.4k
2 个回答

再弄一个隐藏canvas,存的是你写好字的状态,然后你得主canvas直接drawImage(canvas,)就好了 。你可以百度搜索一下 离屏canvas
意思就是将静态数据绘制在离屏canvas上面,在当前的canvas上面绘制离屏canvas,在再将动态数据绘制在当前canvas上面,这样就能减少静态数据的绘制次数。

// 保存状态
ctx.save(); 
// 缩放
ctx.scale(); 
// 放字
ctx.fillText("几个字"); 

// 恢复状态
ctx.restore(); 

translate/scale/rotate 最终的目的是控制下一次绘制的矩阵,所以要缩放对应的图形需要在绘制到画布前做对应的「矩阵变换」

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题