Farbfüller

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Farbfüller

Beitrag 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.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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...
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

moin, moin, Konne...

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

bis denne...
scholly
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Hast du Paint? Dort gibt es so einen Farbtopf oder wie man des nennen soll. Die Funktion sollte genauso Funktionieren.
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

Beitrag von Mischa »

Für Windows..
dc=StartDrawing(ImageOutput())
ExtFloodFill_(dc,x,y,color,#FLOODFILLSURFACE)
StopDrawing()
Gruß,
Mischa
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Vielen Dank, dass hab ich gesucht!
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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")
Antworten