Hier mal ein Algorithmus:



Objekt-Ausmal-Algorithmus

Dieser Algorithmus geht über ein Objekt und malt alle Pixel einer Farbe mit einer anderen Farbe aus. Begrenzungen sind bestimmt durch eine andere Farbe als die ursprüngliche.

Ausgangspunkt und Bestimmer der zu übermalenden Farbe ist dabei ein beliebiger Pixel innerhalb des Zielobjektes.

Der Algorithmus benutzt dabei zwei Tabellen um gefundene Startpunkte, die noch nicht an der Reihe sind, zu merken: einmal für die Richtung nach oben, und einmal für die Richtung nach unten.

Leider werden momentan noch alle pixel doppelt geprüft (einmal beim gucken ob darüber/darunter, und einmal beim gucken ob links/rechts) da ließe sich sicher auch noch was optimieren!

Pseudocode:
Code:
- Startpixel in beide Tabellen tun

- solange Tabellen nicht leer sind:

	- nach oben suchen:

		- Pixel aus tabelle1 nehmen
		- einfärben
		- andere_farbe_flag setzen

		- nach links gehen bis vor andersfarbigen pixel

			- darüber andere farbe? -> andere_farbe_flag setzen
			- darüber gleiche farbe?
				- andere-farbe-flag gesetzt:
					- andere-farbe-flag löschen
					- gefundener pixel -> tabelle1
				- andere-farbe-flag nicht gesetzt:
					- nix tun
			- einfärben

		- andere-farbe-flag löschen

		- nach rechts gehen bis vor andersfarbigen pixel

			- siehe nach-links-gehen
		
	- nach unten suchen:

		- äquivalent zu nach oben suchen

Edit:
hab grad festgestellt da fehlt noch was:
wenn der algo zb nach oben und links geht, und geht gerade so über eine andere farbe hinweg, wird darunter nicht nach neuen gleichfarbigen pixeln gesucht. scheinbar reichen da 2 vergleiche doch nicht, allerdings kann man ihn dann an ner anderen stelle vereinfachen und nur 1 tabelle benutzen, ich arbeite dran...

Nochmal Edit:
siehe http://www.gkrueger.com/java/aufgaben/aufg14.html
Punkt 39c dort wird ein ziemlich effizienter algorithmus beschrieben.