Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - IMAGECONVERTROW

Referenz-Navigation

 

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

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 Befehlsreferenzeintrag-lang qb steht IMAGECONVERTROW nicht zur Verfügung und kann nur über __IMAGECONVERTROW aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragIMAGECREATE, BefehlsreferenzeintragIMAGEDESTROY, BefehlsreferenzeintragIMAGEINFO, BefehlsreferenzeintragGET (Grafik), BefehlsreferenzeintragPUT (Grafik), BefehlsreferenzeintragSCREENRES, BefehlsreferenzeintragGrafik


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 29.07.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 27.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen