不久前,我遇到了同样的问题,经过一番搜索,我发现这是最好的解决方案。
Java的
Polygon类具有
contains()使事情变得非常简单的方法。不幸的
java.awt.Polygon是,Android不支持该类。但是,我找到了写过同等课程的人。
我认为您无法从Android
Path类中获得组成路径的各个要点,因此您将不得不以其他方式存储数据。
该类使用交叉编号算法来确定该点是否在给定的点列表内。
public class Polygon{ // Polygon coodinates. private int[] polyY, polyX; // Number of sides in the polygon. private int polySides; public Polygon( int[] px, int[] py, int ps ) { polyX = px; polyY = py; polySides = ps; } public boolean contains( int x, int y ) { boolean oddTransitions = false; for( int i = 0, j = polySides -1; i < polySides; j = i++ ) { if( ( polyY[ i ] < y && polyY[ j ] >= y ) || ( polyY[ j ] < y && polyY[ i ] >= y ) ) { if( polyX[ i ] + ( y - polyY[ i ] ) / ( polyY[ j ] - polyY[ i ] ) * ( polyX[ j ] - polyX[ i ] ) < x ) { oddTransitions = !oddTransitions; } } } return oddTransitions; } }


