私はクリックされたピクセル(x、y)の座標とカラーコードを入力として使用するJavaで非再帰的な洪水方法を作成しています。 imgはバッファリングされたイメージです。非再帰的な洪水フィラーメソッド
コードは機能しますが、大きな単純な図形(四角形など)の場合にのみ動作し、時にはそれらを埋めていないこともあります。常にどのような形でも動作するように修正することはできますか?
public void floodFillNoRecursion (int x, int y, int color) {
if (img.getRGB(x, y)!=Color.BLACK.getRGB()) {
return;
} else {
int x1=x;
int y1=y;
img.setRGB(x, y, color);
for (int i=0;i<img.getHeight();i++) {
for (int j=0;j<img.getWidth();j++){
if (img.getRGB(x1+1, y1)==Color.BLACK.getRGB()){
x1++;
img.setRGB(x1, y1, color);
}
else if (img.getRGB(x1, y1+1)==Color.BLACK.getRGB()){
y1++;
img.setRGB(x1, y1, color);
}
else if (img.getRGB(x1, y1-1)==Color.BLACK.getRGB()){
y1--;
img.setRGB(x1, y1, color);
}
else if (img.getRGB(x1-1, y1)==Color.BLACK.getRGB()){
x1--;
img.setRGB(x1, y1, color);
}
}}
}}
あなたは、少なくともそのコードをフォーマットしていただけますか? – Fildor
あなたは1つのカラーコードを使用しています。それは、人工的に作られた写真でしか現実的ではありません。 jpegとbackへの変換でさえこれを破壊するでしょう。あなたはむしろ閾値を与えたいと思うでしょう。 – Fildor
それから、デバッガでステップ実行する必要があります。インデックスバールにはいくつかの問題があります... – Fildor