【发布时间】:2016-11-02 11:44:01
【问题描述】:
我有一个从 SVG 文件生成的复杂形状,我们将图像剪辑到画布中。
但是,所有贝塞尔曲线坐标均基于 0,0。我们的形状的大小取决于画布的大小(根据用户的屏幕宽度进行缩放)。
有没有办法获取已经绘制好的形状,然后将其移动到画布上的某个位置?很像 ctx.scale(#, #) 会缩放绘制的形状吗?
谢谢!
【问题讨论】:
我有一个从 SVG 文件生成的复杂形状,我们将图像剪辑到画布中。
但是,所有贝塞尔曲线坐标均基于 0,0。我们的形状的大小取决于画布的大小(根据用户的屏幕宽度进行缩放)。
有没有办法获取已经绘制好的形状,然后将其移动到画布上的某个位置?很像 ctx.scale(#, #) 会缩放绘制的形状吗?
谢谢!
【问题讨论】:
使用ctx.translate() 更改画布上项目的位置。
见:https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Transformations#Translating
使用 translate 将改变随后在画布上绘制的所有内容的位置。如果你只想移动一件东西,你可以这样做:
ctx.translate(x,y);
// draw something
ctx.translate(-x,-y);
或者你可以这样做:
ctx.save();
ctx.translate(x,y);
// draw something
ctx.restore();
【讨论】: