000
25.09.2004, 11:59 Uhr
~hardixy
Gast
|
Hi, ich möchte mein Bitmap pixelweise verändern, bevor ich es später ausgebe... dazu möchte ich an jeder Stelle im Bild die Farbwerte lesen und danach veränderte Farbwerte setzen. Ich möchte noch weitere Funktionen mit dem Bild machen und es anschliessend speichern, daher die Manipulation direkt in der BITMAP-Struktur.
Das nachfolgende Programm läd das Bild gibt es auf dem Bildschirm aus, was mir natürlich nicht reicht. So nun seid ihr dran... ich komme nämlich nicht weiter.
Ahoi, hardixy
C++: |
BITMAP bmp; HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "meinBild.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); PBITMAPINFO pbi = CreateBitmapInfoStruct(hWnd, hBitmap); PBITMAPINFOHEADER pbih = (PBITMAPINFOHEADER) pbi; LPBYTE lpBits; /* zeigt auf die Bilddaten */
//Speicher für Bilddaten wird reserviert lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih->biSizeImage); //Farbwerte von Bild werden in Buffer geschrieben GetDIBits(hDC, hBitmap, 0, (WORD) pbih->biHeight, lpBits, pbi, DIB_RGB_COLORS);
//Bildinformationen werden nun lesbar...über Variable bmp GetObject(hBitmap, sizeof(bmp), &bmp);
//Bild in Gerätekontext laden HDC hBitmapDC = CreateCompatibleDC(hDC); SelectObject(hBitmapDC, hBitmap); //Art der Kompression einstellbar SetStretchBltMode(hDC, COLORONCOLOR); StretchDIBits( hDC, 0, 0, bildlaenge, bildhoehe, 0, 0, bmp.bmWidth, bmp.bmHeight, lpBits, pbi, DIB_RGB_COLORS, SRCCOPY); }
|
Bearbeitung von typecast: |
cpp-Tags gesetzt
|
Dieser Post wurde am 01.10.2004 um 00:00 Uhr von typecast editiert. |