我正在尝试使用OnTouchListener
和2dContext.translate
和2dContext = 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()
记住并重置先前定义的画布属性。这些功能在堆栈上运行,因此您可以保存多个状态。