Color.BLACK 是 argb 十六进制值 0xff000000 的整数表示。因此,您的声明是检查圆中的中心点是否与 Color.BLACK 的透明度、红色值、蓝色值和绿色值完全相同。
几个选项:
您可以尝试使用仅比较 rgb 值
if(Color.rgb(Color.red(Color.BLACK), Color.green(Color.BLACK), Color.blue(Color.BLACK) == Color.rgb(Color.red(pixelColor), Color.green(pixelColor), Color.blue(pixelColor))
或者,您可以扫描整个圆圈以查找黑色 (0x000000) 像素。
或者,您可以使用色差算法,您可以根据需要测试不同的容差。这可以帮助您如何比较两种颜色的相似性/差异。
以下内容尚未经过测试,但可以让您了解您还可以采取哪个方向:
//mid points x1 and y1
int x1=(int) (myMidPoint.x) /2;
int y1=(int)(myMidPoint.y)/2;
int radius = 30;
int topPoint = y1 - radius;
int leftPoint = x1 - radius;
int rightPoint = x1 + radius;
int bottomPoint = y1 + radius;
int scanWidth = 0;
for(int i = topPoint; i < bottomPoint; i++)
{
if(i <= y1)
{
scanWidth++;
}
else {
scanWidth--;
}
for(int j = x1 - scanWidth; j < x1 + scanWidth; j++)
{
int pixelColor = myBitmap.getPixel(j,i);
if(Color.rgb(Color.red(Color.BLACK), Color.green(Color.BLACK), Color.blue(Color.BLACK) == Color.rgb(Color.red(pixelColor), Color.green(pixelColor), Color.blue(pixelColor))
{
System.out.println("pixel black");
}
}
}