我使用的是this tutorial right now,我的工作很完美,但我唯一擔心的是它有點慢。我有一個600x600的畫布,使用填充工具時,大約需要2秒來填充畫布。在Microsoft Paint中填充大小的畫布是即時的,並且填充大小爲(6000x6000)10x的畫布在大約1秒時仍略短。有什麼方法可以讓HTML5畫布中的洪水填充更快?
這僅僅是javascript和canvas元素的限制,還是可以優化爲接近MS Paint等桌面程序的速度?我用螢火蟲異型它和該功能似乎是主要瓶頸之一,但它確實有運行每次迭代所以..
function matchStartColor(pixelPos, startR, startG, startB) {
var r = colorLayerData.data[pixelPos];
var g = colorLayerData.data[pixelPos + 1];
var b = colorLayerData.data[pixelPos + 2];
return (r == startR && g == startG && b == startB);
}
您可能想嘗試一種非遞歸填充算法,因爲顯然Chrome具有堆棧限制:http://www.somethinghitme.com/2012/03/07/html5-canvas-flood-fill/。另外,也許http://code.google.com/p/canvas-floodfill/會很有用。 –
@AndrewMorton感謝提到,但我的方法真的很容易受到堆棧限制(somethinghitme.com)。 – Loktar
@Loktar我正在使用你的網站文章指出,可能會有限制,但提到你的網站的榮譽被提及:) –