Hej. Er der nogen, der gider skrive et eksempel på hvordan kan tager indholdet fra et HDC og gemmer det i en bmp-fil på disken? Jeg har selv prøvet på at lave noget, men jeg ved ikke helt hvad der gik galt. Billedet blev bare fyldt med "støj" ...
Det skal være i ren win32-api, dvs. ikke noget MFC og den slags.
Nu har jeg godt nok slettet det kode fordi jeg blev lidt irriteret, men det var noget lign det her(ikke testet):
HDC hdc = GetDC(hwnd); // så har vi en DC til det, der skal gemmes i filen
HDC compDC = CreateCompatibleDC(hdc);
//300 er width og height HBITMAP bitmap = CreateCompatibleBitmap(hdc, 300, 300);
//Så tegner jeg så fra hdc til compDC(og dermed til bitmap) BitBlt(compDC, 0, 0, 300, 300, hdc, 0, 0, SRCCOPY);
//Nu vil jeg så have bitsne fra bitmap over i et array unsigned char* bits = new unsigned char[300*300*3]; //*3 for RGB, ikk? GetBitmapBits(bitmap, 300*300*3, bits);
//Og så havde jeg et stykke kode der kunne skrive en BMP-fil til disken, hvis du også vil se det så sig lige til. Koden kommer fra en bog, så jeg skulle da mene at den virker. Sig lige til hvis du også vil se det.
Ja, det virker. Jeg prøvede at sætte min kode med GetBitmapBits ind i stedet for din løkke, og den gav mig et billede der lignede det på skræmen lidt. Mon det skyldes at GetBitmapBits gemmer bitsne i arrayet på en anden måde, end WriteBitmapFile forventer?
Anyways, så prøvede jeg GetDIBits i stedet for GetBitmapBits, og det virkede sørme!
Jeg kunne forestille mig at GetBitmapBits gemmer 4 bytes for hver pixel. Prøv at kikke i .bmp filen med en editor der kan vise rå bytes og prøv om du kan se et mønster (eller send mig .bmp filen, zippet).
Jeg vil meget gerne se koden med GetDIBits, hvis jeg må.
narrr >> du mangler en SelectObject i din kode efter du har oprettet bitmappen. Hvis du ikke vælger den ind i DC'et før du tegner (Blt'er) i det, giver det ingen mening...
Nu er det mange år siden jeg har kodet under Windows, så tag dette med et gran salt.
Jeg synes jeg kan huske noget med at de ting man skriver på en DC svarer til kommandoerne i en WMF fil. Så det burde være muligt på en nem måde at tage en DC og smide den i en WMF fil. Tror jeg nok, altså.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.