2013-07-10 37 views
0

在我的應用程序中,用戶可以使用「筆」工具繪製出形狀,就像在Photoshop中一樣。座標存儲在一個點陣列中,路徑由它們組成。路徑是在Canvas上繪製的。一個路徑是否包含一個點?

我想能夠檢測用戶是否點擊了形狀,但我不知道如何開始。如果它是一個規則的形狀,例如rectangle,我可以創建一個區域並使用它,但它們的路徑可以包含許多點並且可以是任何形狀。

感謝您的幫助......

+0

你shold CHACK這一點;) http://stackoverflow.com/questions/9588003/android-how-to-檢查-IF-A-路徑包含-觸碰點 – user3095990

回答

0

找到了解決由於本網站http://alienryderflex.com/polygon/

然後我編輯它與Android和Java的工作。如果有人有興趣,這裏的解決方案(非常類似於原來的):

public boolean clicked(MotionEvent e) { 
    int j = points.size() -1 ; 
    boolean oddNodes = false; 

    for (int i = 0; i < points.size(); i++) { 
     if ((points.get(i).y < e.getY() && points.get(j).y >= e.getY() || points 
       .get(j).y < e.getY() && points.get(i).y >= e.getY()) 
       && (points.get(i).x <= e.getX() || points.get(j).x <= e 
         .getX())) { 
      if (points.get(i).x + (e.getY() - points.get(i).y) 
        /(points.get(j).y - points.get(i).y) 
        * (points.get(j).x - points.get(i).x) < e.getX()) { 
       oddNodes = !oddNodes; 
      } 
     } 
     j = i; 
    } 

    return oddNodes; 
} 
相關問題