Seite 1 von 1

Farbfüller

Verfasst: 18.12.2005 16:28
von Konne
Ich hab ich jetzt mal mehr mit der Drawinglibary beschäfftig, kann aber einfach keine Funktion finden, welche alle Pixel ,einer Farbe , und benachtbart sind in eine andere Farbe umwandelt. (so wie der Farbfüller bei Paint).
Bidde helft mir.

Verfasst: 18.12.2005 16:42
von hardfalcon
So eine Funktion musst du dir dann wohl selber schreiben. Dürfte aber auch nicht soo schwierig sein. Du checkst einfach die Farbwerte des Ausganspixels, und dann färbst du, nachdem du das Ausgangspixel umgefärbt hast, jedes der umliegenden 8 Pixel ebenfalls um, falls es die selbe Frabe wie das Ausgangspixel hat. Dann setzt du das Spielchen fort für jedes neu eingefärbte Pixel... Irgendwann findest du keine Pixel mehr, die du noch einfärben könntest, und dann is die Procedure fertig...

Verfasst: 18.12.2005 16:43
von scholly
moin, moin, Konne...

Hilft FillArea(x, y, RandFarbe [, Farbe]) nicht weiter ?

bis denne...
scholly

Verfasst: 18.12.2005 17:16
von Konne
@hardfalcon
Danke für den Tipp ich hab das jetzt mal gemacht, aber es ist verdammt langsam durch das Point und Plot, gibt es nicht eine schneller Methode?
Gibt es vielleeicht eine schnelle Lösung mit Direct X (also Sprites )?

@scholly
Meines wissens nach (das was in der Help steht) ändert dieser befehl alle Pixel irgend einer Farbe bis die Randfarbe auftritt. Ich benötige aber eine Funktion die nur eine Farbe von Zusammenhängenden Pixeln ummalt.

Verfasst: 18.12.2005 18:25
von scholly
Konne hat geschrieben:Meines wissens nach (das was in der Help steht) ändert dieser befehl alle Pixel irgend einer Farbe bis die Randfarbe auftritt. Ich benötige aber eine Funktion die nur eine Farbe von Zusammenhängenden Pixeln ummalt.
Wenn um diese "zusammenhängenden Pixel" herum nur eine andere Farbe ist, trifft das doch zu und dann wäre Dein Problem gelöst :)
scholly

Verfasst: 18.12.2005 18:40
von Konne
Hast du Paint? Dort gibt es so einen Farbtopf oder wie man des nennen soll. Die Funktion sollte genauso Funktionieren.

Verfasst: 18.12.2005 20:45
von Mischa
Für Windows..
dc=StartDrawing(ImageOutput())
ExtFloodFill_(dc,x,y,color,#FLOODFILLSURFACE)
StopDrawing()
Gruß,
Mischa

Verfasst: 19.12.2005 18:30
von Konne
Vielen Dank, dass hab ich gesucht!

Verfasst: 19.12.2005 22:33
von Konne
Habs jetzt mal gesteste und hab ne Frage:

Code: Alles auswählen

CreateImage(1,20,20)
UseImage(1)
dc=StartDrawing(ImageOutput())
  ExtFloodFill_(dc,5,5,$FF0000,#FLOODFILLSURFACE)
StopDrawing()

SaveImage(1,"C:\ZZ.bmp")
Waqrum geht das net? Also warum bleibt die Farbe schwarz?

Danke im Vorraus für die Hilfe.

EDIT//
Hab jetzt verstanden warums net ging. Der Befehl will net die Füllfarbe sondern die zu Füllende Farbe. Was für ein schwanchsinn...
Naja für die dies interessiert will ich den Code net vorbehalten wie es geht:

Code: Alles auswählen

CreateImage(1,20,20)
UseImage(1)
dc=StartDrawing(ImageOutput())
  Box(2,2,15,15,RGB(255,255,255))
  FrontColor(255, 0, 0)
  Debug ExtFloodFill_(dc,10,10,RGB(255,255,255),#FLOODFILLSURFACE)
StopDrawing()

SaveImage(1,"C:\ZZ.bmp")