Syntax: IMAGECREATE(Breite, Höhe[, [Farbe] [, Farbtiefe]])
Typ: Funktion
Kategorie: Gfx
IMAGECREATE reserviert einen Speicherbereich als Datenpuffer für ein Bild.
- 'Breite' und 'Höhe' sind die Maße des Bildes in Pixel.
- 'Farbe' ist ein optionaler Parameter, der eine Farbnummer angibt, mit der der Puffer bei seiner Erstellung gefüllt sein soll. Wenn dieser Parameter ausgelassen wird, setzt FreeBASIC die Transparenzfarbe des jeweiligen Modus ein.
- 'Farbtiefe' gibt die Farbtiefe des erstellten Puffers in Bits pro Pixel an. Wird sie ausgelassen, dann wird die mit SCREENRES eingestellte Farbtiefe des Grafikfensters verwendet.
- Der Rückgabewert ist ein Pointer auf den Beginn des reservierten Speicherbereichs.
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 &HFF00FF; 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 SCREEN (Anweisung) oder SCREENRES 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.
Zum Speicheraufbau eines Bildpuffers siehe Interne Pixelformate: Bildpuffer.
Beispiel:
Dim Img As Byte Ptr
Dim Cut As Byte Ptr
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:
- IMAGECREATE existiert seit FreeBASIC v0.14.
- Seit v0.17 stehen zwei Speicherformate für Bildpuffer zur Verfügung. Siehe Interne Pixelformate für Details.
- Seit v0.24 setzt IMAGECREATE eine Fehlernummer, die man per ERR abfragen kann.
Siehe auch:
IMAGEDESTROY, IMAGEINFO, IMAGECONVERTROW, GET (Grafik), PUT (Grafik), PSET (Grafik), SCREENRES, Interne Pixelformate, Grafik