我正在尝试使用OnTouchListener2dContext.translate2dContext = canvas.getContext('2d')创建一个应用程序。
当用户触摸屏幕和画布时,侦听器将更改声相值。翻译新坐标。

现在,我解决了一个小问题,2dContext.translate实际如何工作。
例如:我使用2dContext.translate(100,100)设置了第一坐标,它不是平移,而是视图中的真实坐标。视图中的第二个坐标为[400,400]。什么是正确的2dContext.translate(400,400)2dContext.translate(300,300)

我的意思是,我是否必须像pan(100 + 300)那样将新坐标设置为最后一个坐标,还是像全新的coord(400)那样设置第二个坐标?在这种情况下,坐标是否具有相对或绝对值?

最佳答案

每个翻译都相对于当前原点。如果调用ctx.translate(x, y),则原点将在x方向上移动x像素,并在y方向上移动y像素。正值和负值都可以接受。

如果需要保持变化的原点位置,请使用ctx.save()ctx.restore()记住并重置先前定义的画布属性。这些功能在堆栈上运行,因此您可以保存多个状态。

09-25 17:36