我正在寫一個JavaScript應用程序,它在HTML畫布上繪製任意形狀的對象。用戶應該能夠通過點擊選擇任何對象。HTML畫布:通過使用ghost畫布點擊鼠標點擊測試 - 消除鋸齒問題
爲了使這是一個O(1)操作,我使用了一個陰影畫布,即一個沒有顯示的大小完全相同的畫布,其中繪製在普通畫布上的每個對象也繪製在那裏 - 但是使用顏色代表它是ID
。
因此,一個簡單的ghostContex.getImageData()
連同鼠標點擊座標爲我提供了該像素的顏色,因此也爲點擊對象的顏色提供了ID
。
所有這一切都工作正常 - 除了當我點擊一個對象的確切邊界。
,因爲它是與鬼畫布,我得到一個錯誤的顏色(如顏色是正確的ID
和那是以前畫下它的對象的ID
...之間的混合物)抗鋸齒繪製。這種錯誤的顏色是代表一個錯誤ID
,因此我選擇了完全不同的對象:(
我該如何解決這個問題
注意1:我已經使用的翻譯(0.5,0.5 )技巧來防止大多數反鋸齒
注意#2:我之前試圖用SVG編寫這個應用程序,但特別是這個對象的選擇非常慢,因爲我猜它是碰撞檢測的對象太多了,這是主要原因爲什麼我現在需要一個O(1)方法......哦,這樣我就可以輕鬆地在鬼畫布上畫出比線條畫在正常畫布上更大的線條,使拾取更容易。 ote#3:相關瀏覽器是Firefox,Chrome,Android 2.3+本機和iOS本機
有時候,我對使用隱藏畫布(可能在某處讀取)的想法感到沮喪,因爲我可以使用隱藏畫布。那是幾個月前的事。現在我重新開始努力,並在我研究網絡的反鋸齒問題中實現它 - 當然,我偶然發現了你的舊教程。所以我得到了(至少?)如何從那裏命名 - 謝謝! – Chris 2013-05-01 17:51:29