2011-08-29 127 views
0

我正在處理畫布應用程序,並使用scale()和translate()實現了放大和縮小功能。 放大後,我的畫布實際上比它在屏幕上看到的要大,所以我想爲整個畫布實現拖放功能。拖動縮放的html畫布

我該怎麼辦?

回答

2

拖放到底是什麼?

你的意思是拖動整個畫布場景?這就是所謂的鼠標平移。

在鼠標按下事件,開始平移和保存鼠標位置

在mousemove事件,翻譯由當前鼠標位置和原始位置之間的差的上下文(ctx.translate(x,y)),然後重新繪製場景。

在mouseup事件中,停止平移。

(有困難的方式,比如你可以實現畫布內部或外部滾動條)

+0

我不能重繪整個場景中的每個鼠標移動 - 它需要大量的時間。 –

+0

您應該可以做到這一點,但您可能必須開始使用優化。例如,您只需要重繪用戶當前可以用畫布看到的對象,並跳過任何屏幕外的繪圖。 –