我想實現HTML5 canvas元素內容的垂直滾動。我不想再次呈現整個內容。相反,我想將整個內容向上/向下移動,並只渲染已滾動到視圖中的區域。什麼是在HTML5 canvas元素內移動矩形(像素)區域的最快方法
我嘗試使用getImageData
和putImageData
函數,但在我的測試中,它們幾乎和重繪整個場景一樣緩慢。
// scroll 20px down
var data = ctx.getImageData(0, 0, width, height-20);
ctx.putImageData(0, 20);
複製畫布元素中矩形像素區域的最快方法是什麼?
好主意,但不幸的是我不知道確切的大小,滾動區域可能有數千像素的高度,所以我不認爲這對我有用。 – 2010-01-11 12:22:08
我希望在我的應用程序中實現滾動之前,我已經知道了這種方法。我用一個大的隱藏畫布和一個小視口畫布使用雙緩衝。然後我將隱藏的新可見部分複製到視口。它可以工作,但可能會更快。如果圖像可能高達數千像素,我的解決方案將無法工作。 – 2010-01-21 04:29:05
但是如果沒有期望能夠向下滾動,當到達底部時,您可以重新繪製新的「超大」畫布上的最後一個屏幕。如果你有任何停機時間(比如在信息流中暫停),你可以重繪和截斷,然後甚至沒有人注意到。前一種技術並沒有消除延遲,但它肯定會限制它發生得少得多。 – 2010-05-04 23:28:53