IMAGECONVERTROW

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » I » IMAGECONVERTROW

Syntax: IMAGECONVERTROW Quelle, Quell_bpp, Ziel, Ziel_bpp, Breite [, IstRGB]
Typ: Anweisung
Kategorie: Gfx

IMAGECONVERTROW kopiert eine bestimmte Anzahl von Pixeln von einem Grafikpuffer in einen anderen und konvertiert dabei die Anzahl der Bits pro Pixel in der Kopie auf einen gewünschten Wert.

Beispiel:

#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB
#endif

Const As Integer w = 64, h = 64
Dim As IMAGE Ptr img8, img32
Dim As Integer x, y

' erstelle ein 32-bit-Image in der Größe w*h:
ScreenRes 1, 1, 32, , GFX_NULL
img32 = ImageCreate(w, h)
If img32 = 0 Then Print "IMAGECREATE ist bei img32 fehlgeschlagen!": Sleep: End

' erstelle ein 8-bit-Image in der Größe w*h:
ScreenRes 1, 1, 8, , GFX_NULL
img8 = ImageCreate(w, h)
If img8 = 0 Then Print "IMAGECREATE ist bei img8 fehlgeschlagen!": Sleep: End

' fülle das 8-bit-Image mit einem Muster
For y = 0 To h - 1
    For x = 0 To w - 1
        PSet img8, (x, y), 56 + (x + y) Mod 24
    Next x
Next y

' öffne ein Grafikfenster im 8-bit-Modus und gib dort das Bild aus
ScreenRes 320, 200, 8
WindowTitle "8-bit-Farbmodus"
Put (10, 10), img8
Sleep

' kopiere die Daten in ein 32-bit-Image
Dim As Byte Ptr p8, p32
Dim As Integer pitch8, pitch32

#ifndef ImageInfo ' ältere Versionen von FreeBASIC besitzen keine Funktion IMAGEINFO
#define GETPITCH(img_) IIf(img_->type=PUT_HEADER_NEW,img_->pitch,img_->old.width*img_->old.bpp)
#define GETP(img_) CPtr(Byte Ptr,img_)+IIf(img_->type=PUT_HEADER_NEW,SizeOf(PUT_HEADER),SizeOf(_OLD_HEADER))
pitch8 = GETPITCH(img8): p8 = GETP(img8)
pitch32 = GETPITCH(img32): p32 = GETP(img32)
#else
ImageInfo( img8,  , , , pitch8,  p8  )
ImageInfo( img32, , , , pitch32, p32 )
#endif

For y = 0 To h - 1
    ImageConvertRow(@p8 [ y * pitch8 ],  8, _
                    @p32[ y * pitch32], 32, _
                    w)
Next y

' öffne ein Grafikfenster im 32-bit-Modus und gib dort das Bild aus:
ScreenRes 320, 200, 32
WindowTitle "32-bit-Farbmodus"
Put (10, 10), img32

Sleep

' Speicher freigeben
ImageDestroy img8
ImageDestroy img32

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC: existiert erst seit FreeBASIC v0.16

Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht IMAGECONVERTROW nicht zur Verfügung und kann nur über __IMAGECONVERTROW aufgerufen werden.

Siehe auch:
IMAGECREATE, IMAGEDESTROY, IMAGEINFO, GET (Grafik), PUT (Grafik), SCREENRES, Grafik