2011-11-13 53 views
1

我正在嘗試使用OnTouchListener2dContext.translate以及2dContext = canvas.getContext('2d')來創建應用程序。
當用戶觸摸屏幕和canvas.translate新座標時,監聽器將更改pan值。canvas 2dContext.translate(...)如何實際工作?

現在我解決了一個小問題,2dContext.translate實際上是如何工作的。
例如:我使用2dContext.translate(100,100)設置第一個座標,它不是平底鍋,而是一個視圖中的真正座標。視圖中的第二個座標是[400,400]。什麼是正確的,2dContext.translate(400,400)2dContext.translate(300,300)

我的意思是,我是否必須設置新的座標來保存像pan(100 + 300)那樣的座標嗎?還是必須設置像全新座標(400)那樣的第二個座標?在這種情況下,這些座標是否具有相對或絕對的價值?

回答

2

每個翻譯都是相對於當前的原點。如果您撥打ctx.translate(x, y),您的原點將在x方向上移動x像素,在y方向上移動y像素。正面和負面的價值都被接受。

如果您需要保持不同的原點位置,請使用ctx.save()ctx.restore()來記住和重置以前定義的畫布屬性。這些函數在堆棧上運行,因此可以保存多個狀態。