Speicheradresse der Bitmap-Grafikdaten
-
Moin, Moin...
Ich möchte gerne die Adresse der Grafikdaten einer Bitmap haben. Dafür habe ich mittels GetObject die BITMAP-Struktur einer Speicher-Bitmap füllen lassen. Die Daten wie Höhe, Breite, Farbtiefe, etc. werden korrekt übergeben. Nun gibt es ja auch einen Zeiger auf eben diese Grafikdaten innerhalb der BITMAP-Stuktur. Dummerweise wird aber ein NULL-Zeiger zurückgeliefert. Warum gibt mir die Funktion nicht auch die Adresse?
HBITMAP hbmJpeg, hbmOld; HDC hdcJpeg; // Speicher-Bitmap erzeugen, abgeleitet von einer anderen Speicher-Bitmap hdcJpeg = CreateCompatibleDC(hdcMem); hbmJpeg = CreateCompatibleBitmap(hdcMem, breite, hoehe); hbmOld = SelectObject(hdcJpeg, hbmJpeg); // Den Inhalt der "alten" Speicher-Bitmap in die neue kopieren BitBlt(hdcJpeg, 0, 0, breite, hoehe, hdcMem, 0, 0, SRCCOPY); // BITMAP-Stuktur der neuen Bitmap holen GetObject(hbmJpeg, sizeof(BITMAP), &bmp); // Liefert leider nicht die Adresse der Bilddaten!!! // Aufräumen SelectObject(hdcJpeg, hbmOld); DeleteObject(hbmJpeg); DeleteDC(hdcJpeg);
Danke im voraus...
[ Dieser Beitrag wurde am 14.02.2003 um 11:34 Uhr von Kal El editiert. ]
-
GetDIBits() sollte dein Stichwort sein...
-
-
Dabei noch eine Anmerkung: die einzelnen Pixel-Zeilen werden im Speicher nach DWORD-Grenzen ausgerichtet, d.h., die Länge einer Zeile ist immer teilbar durch 4. Schau dich mal im Forum nach sowas wie "DWORD_ALIGN" um. -King- hat dazu mal ein schönes Makro geschrieben.
-
Vielleicht hilft dir GetDIBits weiter?!
Oups, ich sollte wohl öfters auf aktualisieren klicken[ Dieser Beitrag wurde am 14.02.2003 um 11:53 Uhr von flenders editiert. ]