本android.graphics.Path类没有这样的方法。Canvas类确实具有可以设置为路径的剪切区域,无法针对某个点对其进行测试。您可以尝试Canvas.quickReject,针对单点矩形(或1x1Rect)进行测试。我不知道这是否真的会检查路径还是仅检查封闭的矩形。
Region类显然只跟踪包含的矩形。
您可以考虑将每个区域绘制到一个8位的alpha层位图中,并在每个区域中Path填入自己的“颜色”值(确保在中关闭了抗锯齿功能Paint)。这为每个填充有填充路径的索引的路径创建了一种掩码。然后,您可以仅使用像素值作为路径列表的索引。
Bitmap lookup = Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8);//do this so that regions outside any path have a default//path index of 255lookup.eraseColor(0xFF000000);Canvas canvas = new Canvas(lookup);Paint paint = new Paint();//these are defaults, you only need them if reusing a Paintpaint.setAntiAlias(false);paint.setStyle(Paint.Style.FILL);for(int i=0;i<paths.size();i++) { paint.setColor(i<<24); // use only alpha value for color 0xXX000000 canvas.drawPath(paths.get(i), paint); }然后查点
int pathIndex = lookup.getPixel(x, y);pathIndex >>>= 24;
如果有未填充的点,请确保检查255(无路径)。



