GIFObject (windows only)
Verfasst: 12.03.2012 00:57
Nachdem ich von SoS höflich gebeten wurde, habe ich mal diese Objektklasse erstellt.
Diese Klasse ermöglicht das laden aller Arten von GIFs und deren Weiterverwendung,
also z.B. Speichern der Frames in allen von PB unterstützten Formaten.
Beschreibung GIFObject
Als erstes müssen wir das Objekt erstellen, das geht so:
Define.GIFObject meinevariable = NewGIFObject()
Jetzt können wir die Methoden des Objects nutzen.
Es stehen folgende Methoden zur Verfügung:
LoadImage()
Syntax:
Ergebnis = meinevariable\LoadImage.i(ID, FileName.s)
Parameter:
ID = Gibt eine Nummer an, mit der das geladene Bild identifiziert wird.
#PB_Any kann angegeben werden, um diese Nummer automatisch zu generieren
FileName = Gibt den Namen der zu ladenden Datei an. Wenn der Dateiname
keinen vollständigen Pfad beinhaltet, wird dieser relativ zum aktuellen Verzeichnis interpretiert
Rückgabewert:
Gibt einen Wert ungleich Null zurück, wenn das Bild erfolgreich geladen wurde,
und Null wenn das Bild nicht geladen werden konnte. Wenn #PB_Any als #Image
Parameter angegeben wurde, dann wird bei Erfolg die automatisch generierte Nummer zurückgegeben.
CatchImage()
Syntax:
Ergebnis = meinevariable\CatchImage.i(ID, *Memory, Size.l)
Parameter:
ID = Gibt die Nummer an, mit welcher das geladene Bild identifiziert wird. #PB_Any kann angegeben
werden, um diese Nummer automatisch zu generieren.
*Memory = Gibt die Speicheradresse an, von der das Bild geladen werden soll.
Size = Gibt die Größe des Bildes in Bytes an.
Rückgabewert:
Gibt einen Wert ungleich Null zurück, wenn das Bild erfolgreich geladen wurde, und Null wenn das
Bild nicht geladen werden konnte. Wenn #PB_Any als #Image Parameter angegeben wurde, dann wird bei
Erfolg die automatisch generierte Nummer zurückgegeben.
FreeImage()
Syntax:
meinevariable\FreeImage(ID = #PB_Any)
Parameter:
ID (optional) = Gibt das freizugebende Bild an. Wenn keine ID angegeben wird, werden alle mit dieser Lib
erzeugten Bilder freigegeben, jedoch nicht die mit der Function GetFrame() erstellten!
Rückgabewert:
Diese Funktion gibt keinen Wert zurück.
GetFrame()
Syntax:
Ergebnis = meinevariable\GetFrame(ID, Number.l)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Number = Die Nummer des Frames, die Zählung beginnt bei 0 und endet bei CountFrames() - 1
Rückgabewert:
image (nicht die ImageID!, wie bei mit #PB_Any erzeugten Images) bei Erfolg, ansonsten 0.
CountFrames()
Syntax:
Ergebnis = meinevariable\CountFrames(ID)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Rückgabewert:
Anzahl der Frames.
GetDelayTime()
Syntax:
Ergebnis = meinevariable\GetDelayTime(ID, Number.l = 0)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Number (optional) = Die Nummer des Frames, wird diese Angabe weggelassen, wird das Ergebnis für Frame 0 ermittelt.
Rückgabewert:
Delayzeit in ms
Destroy()
Syntax:
meinevariable\Destroy()
Parameter:
keine
Rückgabewert:
Diese Funktion gibt keinen Wert zurück.
Diese Methode ist immer am Ende der Nutzung dieser Lib aufzurufen. Sie gibt alle Images, soweit noch nicht geschehen,
sowie sämtlichen genutzen Speicher, sowie die gdiplus.dll, wieder frei.
Die mit GetFrame() erstellten Images werden nicht freigegeben. Zum freigeben dieser Images kann man die PB Funktion
FreeImage() verwenden.
Der Code folgt im nächsten Beitrag!
Diese Klasse ermöglicht das laden aller Arten von GIFs und deren Weiterverwendung,
also z.B. Speichern der Frames in allen von PB unterstützten Formaten.
Beschreibung GIFObject
Als erstes müssen wir das Objekt erstellen, das geht so:
Define.GIFObject meinevariable = NewGIFObject()
Jetzt können wir die Methoden des Objects nutzen.
Es stehen folgende Methoden zur Verfügung:
LoadImage()
Syntax:
Ergebnis = meinevariable\LoadImage.i(ID, FileName.s)
Parameter:
ID = Gibt eine Nummer an, mit der das geladene Bild identifiziert wird.
#PB_Any kann angegeben werden, um diese Nummer automatisch zu generieren
FileName = Gibt den Namen der zu ladenden Datei an. Wenn der Dateiname
keinen vollständigen Pfad beinhaltet, wird dieser relativ zum aktuellen Verzeichnis interpretiert
Rückgabewert:
Gibt einen Wert ungleich Null zurück, wenn das Bild erfolgreich geladen wurde,
und Null wenn das Bild nicht geladen werden konnte. Wenn #PB_Any als #Image
Parameter angegeben wurde, dann wird bei Erfolg die automatisch generierte Nummer zurückgegeben.
CatchImage()
Syntax:
Ergebnis = meinevariable\CatchImage.i(ID, *Memory, Size.l)
Parameter:
ID = Gibt die Nummer an, mit welcher das geladene Bild identifiziert wird. #PB_Any kann angegeben
werden, um diese Nummer automatisch zu generieren.
*Memory = Gibt die Speicheradresse an, von der das Bild geladen werden soll.
Size = Gibt die Größe des Bildes in Bytes an.
Rückgabewert:
Gibt einen Wert ungleich Null zurück, wenn das Bild erfolgreich geladen wurde, und Null wenn das
Bild nicht geladen werden konnte. Wenn #PB_Any als #Image Parameter angegeben wurde, dann wird bei
Erfolg die automatisch generierte Nummer zurückgegeben.
FreeImage()
Syntax:
meinevariable\FreeImage(ID = #PB_Any)
Parameter:
ID (optional) = Gibt das freizugebende Bild an. Wenn keine ID angegeben wird, werden alle mit dieser Lib
erzeugten Bilder freigegeben, jedoch nicht die mit der Function GetFrame() erstellten!
Rückgabewert:
Diese Funktion gibt keinen Wert zurück.
GetFrame()
Syntax:
Ergebnis = meinevariable\GetFrame(ID, Number.l)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Number = Die Nummer des Frames, die Zählung beginnt bei 0 und endet bei CountFrames() - 1
Rückgabewert:
image (nicht die ImageID!, wie bei mit #PB_Any erzeugten Images) bei Erfolg, ansonsten 0.
CountFrames()
Syntax:
Ergebnis = meinevariable\CountFrames(ID)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Rückgabewert:
Anzahl der Frames.
GetDelayTime()
Syntax:
Ergebnis = meinevariable\GetDelayTime(ID, Number.l = 0)
Parameter:
ID = Die ID, die bei LoadImage() oder CatchImage() angegeben wurde, bzw. das Ergebnis bei Angabe von #PB_Any.
Number (optional) = Die Nummer des Frames, wird diese Angabe weggelassen, wird das Ergebnis für Frame 0 ermittelt.
Rückgabewert:
Delayzeit in ms
Destroy()
Syntax:
meinevariable\Destroy()
Parameter:
keine
Rückgabewert:
Diese Funktion gibt keinen Wert zurück.
Diese Methode ist immer am Ende der Nutzung dieser Lib aufzurufen. Sie gibt alle Images, soweit noch nicht geschehen,
sowie sämtlichen genutzen Speicher, sowie die gdiplus.dll, wieder frei.
Die mit GetFrame() erstellten Images werden nicht freigegeben. Zum freigeben dieser Images kann man die PB Funktion
FreeImage() verwenden.
Der Code folgt im nächsten Beitrag!