bmap_create(STRING* name): BMAP*
bmap_createpart(STRING* name, var x, var y, var width, var height): BMAP* A8.11
bmap_createblack(var width, var height, var format): BMAP*
Erstellt eine bmap zur Laufzeit. bmap_create lädt
den Inhalt aus einer Bilddatei oder dem Ausschnitt eines Bildes, bmap_createblack erzeugt eine schwarze Bitmap
mit vorgegebenen Dimensionen. Auf diese Weise erstellte Objekte werden
beim Schliessen
der Engine oder durch Aufrufen der Funktion ptr_remove automatisch
gelöscht.
Parameter:
name - Name (STRING* oder char*) einer Bilddatei, aus
der die Größe,
Format
und
Inhalt
der
Bitmap
übernommen werden, optional gefolgt von den Koordinaten eines Ausschnitts.
x - Horizontaler Abstand der Bitmap von der oberen linken Ecke der Bilddatei in Pixeln.
y - Vertikaler Abstand der Bitmap von der oberen linken Ecke der Bilddatei in Pixeln.
width - Breite der Bitmap in Pixeln.
height - Höhe der Bitmap in Pixeln.
format - Bitmapformat (nur unkomprimierte Formate, s.bmap_lock) oder Anzahl an Bits pro Pixel (8, 16, 24, 32).
Rückgabewerte:
BMAP*-Pointer, oder NULL falls sie nicht
erzeugt werden konnte.
Bemerkungen:
- Bitmapmanipulationsfunktionen können erst nach dem ersten Frame aufgerufen werden, da der Video-Device vorher geöffnet werden muss.
- Unterstützte Bilddateiformate sind bmp, pcx, und tga. bmap_create unterstützt auch dds, png, und jpg. Hinweise, welches Format für welchen Zweck geeignet bzw. ungeeignet ist, finden Sie unter file formats.
- Der Ausschnitt aus einer bmp-, pcx-, or tga-Bilddatei läßt sich alternativ zu bmap_createpart definieren, indem nach dem Dateinamen die Offset- und Größenwerte, getrennt durch '#' angegeben werden. bmap_create("panel.tga#360#10#240#50"); beispielsweise erstellt eine Bitmap aus dem Teil des Bildes an der xy-Position 360/10 mit der Größe 240x50 Pixel.
Geschwindigkeit:
Langsam
Beispiel:
// splits an image file horizontally and vertically into several parts,
// and stores them as separate files
void bmap_split(STRING* name,var splits_x,var splits_y)
{
BMAP* bSource = bmap_create(name); // load the bitmap
var dx = bmap_width(bSource)/splits_x; // get width and heigt of a split
var dy = bmap_height(bSource)/splits_y;
var format = bmap_format(bSource);
BMAP* bDest = bmap_createblack(dx,dy,format); // create the split bitmap
var i,j;
for(j=0; j<splits_y; j++)
for(i=0; i<splits_x; i++)
{
// copy content from the original image into the split part, and save it
bmap_blitpart(bDest,bSource,NULL,NULL,vector(i*dy,j*dy,0),vector(dx,dy,0));
bmap_save(bDest,str_printf(NULL,"split%i%i.bmp",(int)j,(int)i));
}
}
Siehe auch :
BMAP, bmap_lock, bmap_to_format, ptr_remove
► Aktuelle Version Online