GetObject: Unterschied zwischen den Versionen
Aus DGL Wiki
Tilman (Diskussion | Beiträge) (→Beschreibung) |
K (Wiki-Syntax für Tabelle; Kategorie) |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | = | + | = GetObject = |
== Name == | == Name == | ||
− | ''' | + | '''GetObject''' - Windows-API-Funktion, welche die Pixeldaten für ein TBitmap-Objekt liefert, die dann z.B. für [[glTexImage2D]] weiterverwendet werden können. |
− | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | function ''' | + | function '''GetObject'''(''hgdiobj'': Cardinal; ''cbBuffer'': Integer; ''lpvObject'': Pointer): Integer; |
==Parameter== | ==Parameter== | ||
− | + | {| border="1" rules="all" | |
− | + | ! ''hgdiobj'' | |
− | + | | Hier muss ein Handle zu einem Bitmap übergeben werden. | |
− | + | |- | |
− | + | ! ''cbBuffer'' | |
− | + | | Größe des Puffers für die Rückgabe. | |
− | + | |- | |
− | + | ! ''lpvObject'' | |
− | + | | Zeiger auf ein windows.BITMAP-Objekt | |
− | + | |} | |
− | |||
− | |||
− | |||
− | |||
== Beschreibung == | == Beschreibung == | ||
− | ''' | + | '''GetObject''' liefert zu einem Bitmap-Handle die Windows-Bitmap-Struktur, aus der einfach die Adresse der Pixeldaten gelesen werden kann, um sie z.B. für [[glTexImage2D]] weiter zu verwenden. |
Anwendungsbeispiel: | Anwendungsbeispiel: | ||
<source lang="pascal"> | <source lang="pascal"> | ||
var | var | ||
− | bm: | + | bm: TBitmap; // Delphi-Bitmap |
buffer: windows.BITMAP; | buffer: windows.BITMAP; | ||
begin | begin | ||
− | bm := | + | bm := TBitmap.Create; |
// Weitere Operationen, wie bm.loadFromFile o.ä. | // Weitere Operationen, wie bm.loadFromFile o.ä. | ||
− | + | GetObject(bm.Handle,sizeof(buffer),@buffer); | |
// buffer.bmBits enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann. | // buffer.bmBits enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann. | ||
</source> | </source> | ||
== Alternativen == | == Alternativen == | ||
− | + | '''GetObject''' ist eine Windows-API-Funktion und funktioniert generell mit allen Bitmaps, für die ein Bitmap-Handle bekannt ist; für TBitmap im speziellen kann alternativ auch die Property Scanline mit dem Index height-1 aufgerufen werden: | |
<source lang="pascal"> | <source lang="pascal"> | ||
var | var | ||
− | bm: | + | bm: TBitmap; // Delphi-Bitmap |
begin | begin | ||
− | bm := | + | bm := TBitmap.Create; |
// Weitere Operationen, wie bm.loadFromFile o.ä. | // Weitere Operationen, wie bm.loadFromFile o.ä. | ||
// bm.ScanLine[bm.height-1] enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann. | // bm.ScanLine[bm.height-1] enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann. | ||
</source> | </source> | ||
+ | |||
+ | == Fehlermeldungen == | ||
+ | Falls die Funktion fehlschlägt, ist der Rückgabewert 0. | ||
+ | |||
+ | [[Kategorie:WinAPI]] |
Aktuelle Version vom 18. September 2010, 04:04 Uhr
Inhaltsverzeichnis
GetObject
Name
GetObject - Windows-API-Funktion, welche die Pixeldaten für ein TBitmap-Objekt liefert, die dann z.B. für glTexImage2D weiterverwendet werden können.
Delphi-Spezifikation
function GetObject(hgdiobj: Cardinal; cbBuffer: Integer; lpvObject: Pointer): Integer;
Parameter
hgdiobj | Hier muss ein Handle zu einem Bitmap übergeben werden. |
---|---|
cbBuffer | Größe des Puffers für die Rückgabe. |
lpvObject | Zeiger auf ein windows.BITMAP-Objekt |
Beschreibung
GetObject liefert zu einem Bitmap-Handle die Windows-Bitmap-Struktur, aus der einfach die Adresse der Pixeldaten gelesen werden kann, um sie z.B. für glTexImage2D weiter zu verwenden.
Anwendungsbeispiel:
var
bm: TBitmap; // Delphi-Bitmap
buffer: windows.BITMAP;
begin
bm := TBitmap.Create;
// Weitere Operationen, wie bm.loadFromFile o.ä.
GetObject(bm.Handle,sizeof(buffer),@buffer);
// buffer.bmBits enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann.
Alternativen
GetObject ist eine Windows-API-Funktion und funktioniert generell mit allen Bitmaps, für die ein Bitmap-Handle bekannt ist; für TBitmap im speziellen kann alternativ auch die Property Scanline mit dem Index height-1 aufgerufen werden:
var
bm: TBitmap; // Delphi-Bitmap
begin
bm := TBitmap.Create;
// Weitere Operationen, wie bm.loadFromFile o.ä.
// bm.ScanLine[bm.height-1] enthält nun die Adresse der Pixeldaten, die von glTexImage2D genutzt werden kann.
Fehlermeldungen
Falls die Funktion fehlschlägt, ist der Rückgabewert 0.