CUSTOM

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » C » CUSTOM

Syntax: { PUT | DRAW STRING } [Puffer, ] [STEP] (x, y), [ weitere Angaben ... ], CUSTOM, blender [, parameter]
Typ: Schlüsselwort
Kategorie: Gfx

CUSTOM ist ein Schlüsselwort, das im Zusammenhang mit PUT (Grafik) und DRAW STRING eingesetzt wird.

Durch CUSTOM wird vor Ausgabe jedes einzelnen Pixels die FUNCTION 'blender' aufgerufen, um zu errechnen, in welcher Farbe das Pixel ausgegeben werden soll.
Diese Funktion wird für jedes neu zu zeichnende Pixel aufgerufen; die Farbe wird jedes mal neu berechnet. Achten Sie beim Einsatz dieses Aktionsworts darauf, dass die Ausführungsgeschwindigkeit unter aufwändigen Berechnungen leiden wird!

Beispiel:

Function dither(ByVal quellpixel As UInteger, ByVal zielpixel As UInteger, ByVal parameter As Any Ptr) As UInteger
  ' gibt zufallsbedingt entweder das Pixel der Bildquelle oder des Hintergrunds zurück
  Dim grenzwert As Single = 0.5
  If parameter <> 0 Then grenzwert = *CPtr(Single Ptr, parameter)

  If Rnd() < grenzwert Then
    Return quellpixel
  Else
    Return zielpixel
  End If
End Function

Dim img As Any Ptr, grenzwert As Single

' Bildschirm setzen
ScreenRes 320, 200, 16, 2
ScreenSet 0, 1

' Bild erzeugen
img = ImageCreate(32, 32)
Line img, ( 0,  0)-(15,  15), RGB(255,   0,   0), bf
Line img, (16,  0)-(31,  15), RGB(  0,   0, 255), bf
Line img, ( 0, 16)-(15,  31), RGB(  0, 255,   0), bf
Line img, (16, 16)-(31,  31), RGB(255,   0, 255), bf

' Bild mit verschiedenen Dither-Werten ausgeben
Do Until Len(Inkey)
  Cls

  grenzwert = 0.2
  Put ( 80 - 16, 100 - 16), img, Custom, @dither, @grenzwert

  ' Standardwert = 0.5
  Put (160 - 16, 100 - 16), img, Custom, @dither

  grenzwert = 0.8
  Put (240 - 16, 100 - 16), img, Custom, @dither, @grenzwert

  ScreenCopy
  Sleep 25
Loop

' Speicher freigeben
ImageDestroy img

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
PUT (Grafik), DRAW STRING, SCREENRES, AND (Methode), OR (Methode), XOR (Methode), PSET (Methode), PRESET (Methode), ADD, ALPHA, TRANS, Grafik