Bitmap laden und einzelne Pixelfarben auslesen



  • Hallo zusammen,

    Ich habe eine normale Bitmap, wie man sie mit Paint erstellen kann.
    Wie kann ich diese Bitmap nun laden, sodass ich mit der Funktion
    GetPixel() Informationen über bestimmte Pixel erhalten kann?
    Wäre super, wenn mir das jemand erklären könnte (Am besten mit Beispielcode).

    Vielen Dank schonmal für eure Antworten!



  • Hab noch ein wenig Code gefunden, jetzt habe ich das hier gebastelt:

    HBITMAP hBitmap;
    BITMAP bmp;
    HDC hDC;
    HDC hBitmapDC;
    HWND hwnd;
    
    hBitmap = (HBITMAP)LoadImage(NULL, "MeineBitmap.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);  
    GetObject(hBitmap,sizeof(bmp),&bmp);  
    hwnd = FindWindow(NULL,"MeinProgramm");
    hDC = GetDC(hwnd);    
    hBitmapDC = CreateCompatibleDC(hDC);  
    SelectObject(hBitmapDC, hBitmap);  
    
    // Pixel auslesen
    
    ReleaseDC(hwnd, hBitmapDC);  
    ReleaseDC(hwnd, hDC); 
    DeleteObject(hBitmap);
    

    Das funktioniert auch soweit ganz gut, allerdings frage ich mich jetzt, Ob diese
    Lösung auch sauber ist, d.h. es keine Speicherlecks entstehen, usw.
    Wäre nett, wenn sich das mal jemand ansehen könnte.



  • Ich hab noch ne Frage:

    Ist es irgendwie möglich, die Breite und die Höhe (in Pixeln) der geladenen Bitmap zu bestimmen? Wär super, wenn mir das jemand zeigen könnte (am besten anhand eines Codebeispiels).


  • Mod

    Das Code Beispiel steht bereits in diesem Posting. 👎
    Wie wäre es, wenn Du Dir mal ansiehst was die einzelnen Strukturen bedeuten:
    BITMAP Structure
    http://msdn.microsoft.com/de-de/library/k1sf4cx2(VS.80).aspx



  • Vielen Dank, das klappt jetzt, mit den Maßen der Bitmap. 🙂


Anmelden zum Antworten