Problem mit StretchDIBits



  • Hallo,

    hab ein seltsames Phanomän mit der Funktion StretchDIBits. Von heute auf morgen
    (so die Aussage des Bedieners) wurden die Bilder nur noch im Sekunden Takt
    aktualisiert und nicht wie zuvor mehrmals pro Sekunde (auch im Taskmanager ist
    auf einmal eine Systemauslastung von 100% zu beobachten). Ich habs das getestet,
    und es ist wirklich an einem Rechner zu beobachten wie das System in die Knie
    geht.Auf allen anderen läuft die identische Software einwandfrei. Hab da
    testweise die Funktion SetDIBitsToDevice genutzt und mit dieser wird das Bild
    wieder in der richtigen Frequenz aktuallisiert, nur eben nicht angepasst.

    Kann mir einer weiterhelfen? Ich bin mit meinem Latein am ende.

    Hier der entscheidende Auschnitte vom Code:

    int nLines = 0;
    	if ((m_lpBMIH == NULL) || (hDC  == NULL))
    		return FALSE;
    
    	if (fStretch)
    	{
    		//100% Systemauslastung
    		SetStretchBltMode (hDC, COLORONCOLOR);
    
    		nLines = StretchDIBits (hDC, startPos.x, startPos.y, size.cx, size.cy,
    									0, 0, m_nSizeX, m_nSizeY,
    									m_lpImage, (LPBITMAPINFO) m_lpBMIH, 
    									DIB_RGB_COLORS, SRCCOPY);
    
    	}
    	else
    	{
    		//Funktioniert!!
    		nLines = SetDIBitsToDevice (hDC,                      // handle to the device
    									startPos.x,               // XDest
    									startPos.y,               // YDest
    									m_nSizeX,                 // source rectangle width
    									m_nSizeY,                 // source rectangle height
    									0,                        // x-coordinate of lower-left corner of the source rect
    									0,                        // y-coordinate of lower-left corner of the source rect
    									0,                        // first scan line in array
    									m_nSizeY,                 // number of scan lines
    									m_lpImage,                // modified address of array with DIB bits
    									(LPBITMAPINFO) m_lpBMIH,  // address of structure with bitmap info
    									DIB_RGB_COLORS);          // RGB or palette indices
    
    	}
    

Anmelden zum Antworten