2012-12-20 63 views
1

我正在用GWT Canvas(Java)創建一些類似的工程圖/流程圖/ UML圖。 對於我的圖紙的命中檢測,我可以想象3種不同的策略,但我不知道哪種方法最適合我的目標。GWT畫布的點擊檢測 - 繪圖的策略?

  • 只是跟蹤所有形狀的座標並重覆上點擊鼠標的所有對象
  • 畫上點擊鼠標鬼畫布外的所有對象,並使用isPointInPath()後,每個對象使用一個鬼畫布繪製
  • 並使用自己的顏色繪製每個對象(如#000001,#000002),並將其引用到Map中。然後只需在鼠標畫布上檢測鼠標點擊並獲取屬於鼠標下的pixelcolor的對象

您更喜歡什麼?爲什麼?

回答

0

我首先想到的形式給出了最好, 非常likly你會繼續參照形狀(即當你要移動或調整顯示對象的情況下),因此,所有你需要做的是執行額外的方法boolean isIn(Point mouseclick,Shape shape)(因爲實施如果可能對每種類型的物體不同,將會更好,如果你把它放在你的形狀上)

我不知道你希望你的ghostcanvas如何工作,但是imho畫出任何額外的聲音,像是巨大的資源浪費。

你的第三個策略將需要從圖像/畫布抓取原始像素,這可能是昂貴的操作