2012-08-22 77 views
6

我已經建造了一個Path2D表示未封閉的形狀包括直線:鼠標指針檢測在P​​ath2D

enter image description here

我希望能夠檢測被點擊鼠標時和鼠標指針接近(在幾個像素內)的路徑。使用contains方法不起作用,因爲該算法將未封閉的形狀視爲隱式關閉(即通過在起點和終點之間繪製直線)。

有沒有人知道另一個機制來實現這一目標?

回答

9
  1. 創建的BasicStroke(寬度控制的像素間距離公差)
  2. 不要用它畫畫,只能使用其createStrokedShape方法,創建從形狀的第二形狀。此第二個形狀描述瞭如果使用BasicStroke繪製第一個形狀時將填充的形狀輪廓。
  3. 使用包含此第二形狀的方法

從Stroke.createStrokedShape API文檔:

返回一個輪廓形狀,其包圍應當形狀根據撫摸被 繪製的區域由執行Stroke接口的對象定義的規則由 定義。

+0

太棒了! - 謝謝你。不幸的是,我剛剛構建了一個例程來組合一個來自多個細長矩形的區域,但現在已設法用以下代碼替換20-30行代碼:cachedPathBoundary = new BasicStroke(PATH_BOUNDARY_THICKNESS).createStrokedShape(path); – Adamski