schneller Pixelzugriff auf HBitmap-Objekt mit Windows-Api-Funktionen



  • Wie kann ich am schnellsten (Lesezugriff reicht) auf die Pixel von einem HBitmap-Objekt zugreifen, welches ich zuvor mit StretchBlt gefüllt habe?

    Welche Methoden muss ich vor oder nach StretchBlt aufrufen?

    Gibt es denn da nicht irgendetwas aus der Windows-Api?



  • Anfaenger2003 schrieb:

    Wie kann ich am schnellsten (Lesezugriff reicht) auf die Pixel von einem HBitmap-Objekt zugreifen, welches ich zuvor mit StretchBlt gefüllt habe?

    Schneller dürfte es nicht gehen:

    BITMAP bm; 
    HBITMAP hBitmapDest; 
    FARPROC pfnGetObject; 
    int x, y; 
    LONG *pDest; 
    
    pfnGetObject (hBitmapDest, sizeof (BITMAP), &bm); 
    pDest = (LONG *) bm.bmBits; 
    
    y = bm.bmHeight * bm.bmWidth; 
    
    // Zugriff 
    
    for (x = 0; x < y; x++) { 
        *(pDest++) = ... // <- irgendwas 
    }
    


  • ::HBITMAP hBitmap(::LoadImage(...));
    if (hBitmap == NULL) return false;
    
    ::BITMAP bmp;
    ::GetObject(hBitmap, sizeof(bmp), &bmp);
    LONG* pBitmapData(static_cast<LONG*>(bmp.bmBits));
    
    LONG lPixelCount(bm.bmHeight * bm.bmWidth);
    
    for (LONG px = 0; px < lPixelCount; ++px)
        *(pBitmapData++) = RGB(10, 20, 30);
    

    schmidt-webdesign.net's Code mal umgeschrieben ...



  • Hey super!!!

    Das hat mir wirklich weiter geholfen, DANKE 👍 mach weiter so


Anmelden zum Antworten