Federhalter
Mitglied
Hallo,
ich habe kein Problem mit dieser Methode und weiß wie man sie verwendet, aber ich habe einen kleinen rekursiven Füllalgorithmus für beliebige Grafikprimitiven implementiert und dieser expandiert Pixel in vier Richtungen. Wenn man z.B. einen Kreis füllen möchte und den Mittelpunkt als Startpunkt angibt sollte meine Füllmethode den Kreis rekursiv Füllen. Geht aber nicht. Das ganze geht nur, wenn man in nur 3 Richtungen expandiert und einen Startpixel ganz am Rand des Kreises angibt.
Liegt das an setRGB(x,y,color) oder an getPixel(int x,int y)?????
Hier meine Methoden:
Der Aufruf von boundaryFill erfolgt in der Zeichenmethode mittels repaint.
ich habe kein Problem mit dieser Methode und weiß wie man sie verwendet, aber ich habe einen kleinen rekursiven Füllalgorithmus für beliebige Grafikprimitiven implementiert und dieser expandiert Pixel in vier Richtungen. Wenn man z.B. einen Kreis füllen möchte und den Mittelpunkt als Startpunkt angibt sollte meine Füllmethode den Kreis rekursiv Füllen. Geht aber nicht. Das ganze geht nur, wenn man in nur 3 Richtungen expandiert und einen Startpixel ganz am Rand des Kreises angibt.
Liegt das an setRGB(x,y,color) oder an getPixel(int x,int y)?????
Hier meine Methoden:
Java:
public boolean rangeOK(int x,int y){
if((x >= 0 && x < image.getWidth())&&(y >= 0 && y < image.getHeight()))return true;
return false;
}
public boolean getPixel(int x,int y){
if(image.getRGB(x,y)!=color)return true; ... bringt er hier einen Stackoverflowfehler
return false;
}
public void boundaryFill(int x,int y){
if(rangeOK(x,y)&&getPixel(x,y)){
setPixel(x,y);
boundaryFill(x-1,y);
boundaryFill(x,y+1);
boundaryFill(x+1,y);
//boundaryFill(x,y-1); Wenn das an ist....
}
}
public void setPixel(int x,int y){
image.setRGB(x,y,color);
}
Der Aufruf von boundaryFill erfolgt in der Zeichenmethode mittels repaint.