IMAGECREATE

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » I » IMAGECREATE

Syntax: IMAGECREATE (Breite, Höhe[, [Farbe] [, Farbtiefe]])
Typ: Funktion
Kategorie: Grafik

IMAGECREATE reserviert einen Speicherbereich als Datenpuffer für ein Bild.

Diese Funktion reserviert einen Speicherbereich, in dem Pixeldaten gepuffert werden können. Sobald dieser Puffer erstellt wurde, können alle Drawing Primitives (einfachste Grafikfunktionen) darauf zugreifen. Bei seiner Erstellung wird der Speicherbereich mit der angegebenen Farbe oder der Transparenzfarbe des jeweiligen Modus ausgefüllt (für indizierte Grafikmodi ist die Transparenzfarbe 0, für alle anderen ist es RGB(255, 0, 255)). Siehe auch SCREENCONTROL.

IMAGECREATE gibt, ähnlich wie ALLOCATE, einen Pointer auf den reservierten Speicherbereich zurück. Wenn IMAGECREATE verwendet werden soll, um Grafiken zwischen Bildschirm und Puffer auszutauschen, dann funktioniert dies nur, wenn bereits ein Grafikmodus mit SCREENRES oder SCREEN initiiert wurde. Falls IMAGECREATE fehlschlägt, ist das Ergebnis 0.
Bildpuffer, die Sie mit IMAGECREATE erstellt haben, sollten unbedingt mit IMAGEDESTROY entfernt werden, sobald sie nicht mehr benötigt werden, um den Speicherplatz freizugeben.

Der Bildpuffer ist vom Typ Image, der in der Datei fbgfx.bi definiert wird.

TYPE Image FIELD = 1
  UNION
    old             AS _OLD_HEADER
    type            AS UINTEGER
  END UNION
  bpp                AS INTEGER
  width              AS UINTEGER
  height             AS UINTEGER
  pitch              AS UINTEGER
  _reserved(1 to 12) AS UBYTE
END TYPE

Wenn Sie fbgfx.bi mit #INCLUDE einbinden, beachten Sie, dass Image zum NAMESPACE FB gehört.
Näheres zum Speicheraufbau des Bildpuffers siehe unter Interne Pixelformate: Struktur eines Bildpuffers für die Drawing Primitives.

Beispiel:

#Include Once "fbgfx.bi"
Dim As FB.Image Ptr img, cut

Screenres 400, 300, 32

img = Imagecreate(64, 64, RGBA(64, 160, 0, 255))
cut = Imagecreate(32, 32)

If img = 0 OR cut = 0 Then
  Print "Speicher konnte nicht reserviert werden!"
  If img Then ImageDestroy img
  If cut Then ImageDestroy cut
End If

Circle img, (32, 32), 28, Rgba(255, 0, 0, 128), , , , F
Get img, (0, 0)-(31, 31), Cut

Put img, (32, 32), cut, Pset
Put (160, 120), img, Pset
Put (180, 140), img, Alpha

Imagedestroy img
Imagedestroy cut
Sleep

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
IMAGEDESTROY, IMAGEINFO, IMAGECONVERTROW, GET (Grafik), PUT (Grafik), PSET (Grafik), SCREENRES, Interne Pixelformate, Grafik