Referenz - IMAGECREATE
Syntax: IMAGECREATE (Breite, Höhe[, [Farbe] [, Farbtiefe]])
Typ: Funktion
Kategorie: Grafik
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 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:
- Seit v0.24 setzt IMAGECREATE eine Fehlernummer, die man per ERR abfragen kann.
- Seit v0.17 stehen zwei Speicherformate für Bildpuffer zur Verfügung. Siehe Interne Pixelformate für Details.
- IMAGECREATE existiert seit FreeBASIC v0.14.
Siehe auch:
IMAGEDESTROY, IMAGEINFO, IMAGECONVERTROW, GET (Grafik), PUT (Grafik), PSET (Grafik), SCREENRES, Interne Pixelformate, Grafik
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|