Bildbetrachter mit Zoom



  • Hallo,

    bevor ich alles selbst implementiere moechte ich mich erkundigen ob es nicht schon fertige Komponenten gibt um folgendes zu realisieren:

    Ich habe ein Bild mit z.B. einer Aufloesung von 3000x3000. Dann skaliere ich es auf eine Groesse die in mein Fenster passt. Aber eigenltich moechte ich das der Benutzer weiterhin auch zoomen kann. Also 100% oder 50% etc. auswaehlen kann...

    Danke fuer Ideen und Tips!



  • StretchBlt?



  • Evtl. vorher Stretch-Mode HALFTONE setzen, sieht besser aus 😉 (resourcenintensiver).



  • Hallo

    Ich verwende folgende Funktion. Aber das einzige was ich bekomme ist ein komplett schwarzes Bild?!

    Sieht jemand einen Fehler? Ich habe alle Fehlerwerte debugged und es laeuft alles wie es laufen soll?!

    Danke!

    HBITMAP ScaleBitmap(HBITMAP hBitmap,
    					   int newWidth,
    					   int newHeight)
    {
    	HBITMAP hbmOldSource;
    	HBITMAP hbmOldDest;
    
    	HBITMAP hbmResult;
    	BITMAP bm;
    	HDC sourceDC, destDC;
    
    	sourceDC = CreateCompatibleDC( NULL );
    	destDC = CreateCompatibleDC( NULL );
    
    	GetObject( hBitmap, sizeof(bm), &bm );
    
    	hbmResult = CreateCompatibleBitmap(sourceDC, newWidth, newHeight);
    
    	hbmOldSource = (HBITMAP)SelectObject( sourceDC, hBitmap );
    	hbmOldDest = (HBITMAP)SelectObject( destDC, hbmResult );
    
    	StretchBlt( destDC, 0, 0, newWidth, newHeight, sourceDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY );
    
    	SelectObject( sourceDC, hbmOldSource );
    	SelectObject( destDC, hbmOldDest );
    
    	return hbmResult;
    }
    


  • Mal eine Frage:
    Ist das Ganze nicht extrem langsam bei 3000x3000 Pixel und WinAPI only?



  • ja


Anmelden zum Antworten