直接上代码,复制可以直接使用 如下 :
/** * 判断一个坐标点是否在不规则多边形内部 * * @param nvert :不规则区域的全部坐标(x,y)点个数,只算x或y一个坐标数组的长度即可 * @param vertx :不规则区域X坐标数组 * @param verty :单个分区Y坐标数组 * @param testx :点击屏幕获取的x坐标 * @param testy :点击屏幕获取的y坐标 * @return :如果为true 表示在区域内,如果为false不在 */ private boolean pnpoly(int nvert, int[] vertx, int[] verty, int testx, int testy) { int i, j; boolean c = false; for (i = 0, j = nvert - 1; i < nvert; j = i++) { if (((verty[i] > testy) != (verty[j] > testy)) && (testx < (vertx[j] - vertx[i]) * (testy - verty[i]) / (verty[j] - verty[i]) + vertx[i])) c = !c; } return c; }