Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - PAINT

Referenz-Navigation

 

Syntax: PAINT [Puffer] [, STEP] (x, y)[, [Füllfarbe][, Randfarbe] ]
Typ: Anweisung
Kategorie: Grafik

PAINT füllt in einem Grafikfenster einen Bereich mit einer Farbe. Das Verfahren ist auch bekannt als 'flood-fill' oder 'paint bucket'.

Ein Füllmuster beschreibt immer einen 8x8 Pixel großen Bereich. Jedes Zeichen innerhalb des Muster-Strings beschreibt dabei die Farbe eines Pixels. Je nach Farbtiefe können die Muster-Strings unterschiedlich lang sein; die maximale Länge berechnet sich aus den Formeln:

size gibt dabei die benötigte Größe in Bytes an.
Wenn der übergebene String kleiner ist (weniger Zeichen besitzt), werden die fehlenden Bytes durch CHR(0) ersetzt.

Beispiel 1: Einen weißen, innen rot ausgefüllten Kreis zeichnen und 3 Sekunden warten

SCREENRES 320, 200
CIRCLE (160, 100), 30, 15
PAINT  (160, 100), 1 , 15

SLEEP 3000

Beispiel 2: Verwendung eines Füllmusters

Const bit_tiefe = 8 ' Farbtiefe wählen - möglich ist 8, 16 oder 32

' Funktion zur Umwandlung eines Farbwertes in den für das Füllmuster benötigten String
Function paint_pixel( ByVal c As UInteger, ByVal tiefe As Integer ) As String
  If tiefe <= 8 Then         ' 8-bit:
    Return Chr( CUByte(c) )
  ElseIf tiefe <= 16 Then    ' 16-bit:
    Return MKShort( c Shr 3 And &h1f Or _
                    c Shr 5 And &h7e0 Or _
                    c Shr 8 And &hf800 )
  ElseIf tiefe <= 32 Then    ' 32-bit:
    Return MKL(c)
  End If
End Function

ScreenRes 320, 200, bit_tiefe   ' Grafikfenster in gewünschter Bit-Tiefe öffnen

Dim As UInteger c, c1, c2       ' Variablen für die Farbwerte
Dim As UInteger randfarbe
Dim As String fuellmuster = ""  ' Variable für das Füllmuster

' Farben setzen
If bit_tiefe <= 8 Then
  c1        = 7  ' Füllfarbe 1
  c2        = 8  ' Füllfarbe 2
  randfarbe = 15 ' Randfarbe
Else
  c1        = RGB(192, 192, 192) ' Füllfarbe 1
  c2        = RGB(128, 128, 128) ' Füllfarbe 2
  randfarbe = RGB(255, 255, 255) ' Randfarbe
End If

' Karomuster erstellen
For y As UInteger = 0 To 7
  For x As UInteger = 0 To 7
    ' Farbe des Pixels wählen (c)
    If (x \ 4 + y \ 4) Mod 2 > 0 Then
      c = c1
    Else
      c = c2
    End If
    ' Pixel zum Muster hinzufügen
    fuellmuster &= paint_pixel(c, bit_tiefe)
  Next x
Next y

' Kreis zeichnen und mit dem Muster füllen
Circle (160, 100), 50, randfarbe
Paint (160, 100), fuellmuster, randfarbe
Sleep

Unterschiede zu QB:

Siehe auch:
BefehlsreferenzeintragSCREENRES, BefehlsreferenzeintragCOLOR (Anweisung), BefehlsreferenzeintragGrafik


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 07.08.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 28.08.2012 von Redakteurnemored gespeichert.
  Versionen Versionen