Pixeldaten aus HBITMAP ermitteln
-
Hallo,
ich habe in einem Programm eine OpenGL-Engine, die als Textur ein Bitmap in Form eines "unsigned char*"-Arrays erwartet. Auf der anderen Seite habe ich aber nur ein HBITMAP-Handle. Wie bekomme ich die hinter HBITMAP stehenden Pixeldaten in ein solches Array? Gibt es eine Möglichkeit, an das konkrete Bitmap, das hinter HBITMAP verborgen ist, ranzukommen?
Vielen Dank!
-
LONG GetBitmapBits(
HBITMAP hbmp, // handle to bitmap
LONG cbBuffer, // number of bytes to copy
LPVOID lpvBits // buffer to receive bits
);
-
Vielen Dank für Deine Antwort, das ging ja wirklich schnell

Leider kann ich diese Funktion nicht verwenden, da ich unter Windows CE entwickle, das hatte ich vergessen zu sagen. Die Funktion steht anscheinend nur auf dem Desktop zur Verfügung. In der MSDN hab ich eine ähnliche Funktion gefunden, GetDIBits(), die allerdings unter CE anscheinend auch nicht unterstützt wird. Gibt es sonst noch irgendetwas? Es muss doch auch unter CE möglich sein, an die Daten ranzukommen...
Vielen Dank!
-
Hi
GetDIBits is not supported under Windows CE. Perhaps the following article
will help you
http://www.pocketpcdn.com/articles/bitmap_bits.html
-
-
Dann selektier die Bitmap in einen DeviceContext und wende auf den dann GetPixel() an. Das ist zwar um einiges langsamer dürfte aber von WinCE unterstützt werden

HBITMAP deineBitmap; // Dies wäre deine HBITMAP HGDIOBJ prevBitmap; COLORREF nenPixel; HDC screenDC; HDC tempDC; screenDC=GetDC(NULL); tempDC=CreateCompatibleDC(screenDC); prevBitmap=SelectObject(tempDC,deineBitmap); // Pixel an der Stelle 5,5 holen: nenPixel=GetPixel(tempDC,5,5); // etc... // Wieder alles freigeben: SelectObject(tempDC,prevBitmap); DeleteDC(tempDC); ReleaseDC(NULL,screenDC);Alternative wäre noch eine HBITMAP mittels CreateDIBSection() erzeugen, dabei hat man ja nen Pointer auf die Pixeldaten. Dann deine HBITMAP und die HBITMAP von CreateDIBSection() in jeweils nen DC selektieren, dann BitBlt() in das HBITMAP von CreateDIBSection() und du hättest dann auch die Pixel...
-
Vielen Dank für Eure Tipps, das hat mir schon sehr weitergeholfen. Ich werde mich mal hinsetzen und das ganze ausprobieren!
Gruß Benni
-
passt nich zum thema aber:
diese englischen benutzer verwundern mich immer, sie verstehen den kontext und das problem, dass der user hat, aber antworten in englisch
