komplexe Flächen ausfüllen

Hmm .. also ich halte an meinem Vorschlag mit Rekursion fest. man beginnt z.B. beim Pixel UNTER dem aktuellem so lange bis man auf den Rand trifft. Da das ganze natürlich rekursiv ist wird dann beim Pixel am Rand damit weiter gemacht ... da dieses nun aber returnt nimmt man sich z.B. das Pixel rechts daneben ... durch die Rekursion kommt man dann auch wieder in weitere Holräume ...
wenn man nun rekursiv alle Pixel nach rechts *und zwangsläufig nach unten* durch hat beginnt man nun am aktuelle letztem Pixel von dort aus nach oben zu gehen und danach nach links ... wenn man nun also so "linksrum" bis zum rekursions-ende gekommen ist returnt alles was am Rand liegt und dann von dem pixel von dem aus man dann nach links gegangen ist geht man nun "rechtsrum" ... das in der rekursion weiter zurück sollte dann mit einigem Aufwand zum ausfüllen JEDER beliebigen GESCHLOSSENEN Form führen.

Ein Beispiel oder gar getestet hab ich das nicht .. wäre aber jetzt so der erste Ansatz den ich verfolgen würde.
 
Habe es ma so versucht :
Java:
//color ist die Farbe von dem 1. Pxiel. farbe ist die Farbe die man gerade ausgewählt hat.
if(pixelfarbe(x+1,y).equals(color) && pixelfarbe(x+1,y)!=(farbe))
    	{
    		gOffScreen.setColor(farbe);
    		gOffScreen.fillRect(x+1, y, 1, 1);
    		fuellen(x+1, y, color);
    	}
    	else if ( pixelfarbe(x, y+1).equals(color) && pixelfarbe(x,y+1)!=(farbe))
    	{
    		gOffScreen.setColor(farbe);
    		gOffScreen.fillRect(x, y+1, 1, 1);
    		fuellen(x, y+1, color);
    	}

    	else if( pixelfarbe ( x-1, y).equals(color) && pixelfarbe(x-1,y)!=(farbe))
    	{
    		gOffScreen.setColor(farbe);
    		gOffScreen.fillRect(x-1, y, 1, 1);
    		fuellen( x-1, y, color);
    	}   
    	else if ( pixelfarbe( x, y-1).equals(color) && pixelfarbe(x,y-1)!=(farbe))
    	{
    		gOffScreen.setColor(farbe);
    		gOffScreen.fillRect(x, y-1, 1, 1);
    		fuellen(x, y-1, color);
    	}

Problem sind nur die Ecken. Dort wechselt er immer zwischen den Pixeln (790, 550) und (791, 550).
Wie kann ich das Problem beheben ****
 
Also mal davon abgesehen das deine IF's so auch garnicht sinnvoll sind *warum prüfst du erst mit equals() und dann auf != ? ... das ergibt keinen Sinn* sieht es an sich ganz gut aus ... dein Problem wird nur die Abbruchbedingung sein ... weil so wie das hier aussieht würdest du irgendwann eine Schnecke beschrieben ... das ist aber nicht das was ich meinte. Auch wäre die KOMPLETTE fuellen-Methode mit den aktuellen Änderungen hilfreich.
 
Zurück