Bild darstellen (die Zweite)



  • Hoi.

    Bin gerade am Werkeln mit meinem bild.bmp.

    Es lässt sich einfach nicht anzeigen, egal was ich versuche.

    Die eigentlich einfachste Sache der Welt klappt, aus welchen Gründen auch immer, einfach nicht.

    Hier mal fix er SrcCode:

    case WM_CREATE:
    		{
    			HDC hdc = GetDC( hwnd );
    			HDC hdcMem = CreateCompatibleDC( hdc );
    
    			HBITMAP hBmp = ( HBITMAP )LoadImage( NULL, "bild.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
    
    			SelectObject( hdcMem, hBmp );
    
    			BitBlt( hdc, 0, 0, 200, 200, hdcMem, 0, 0, SRCCOPY );
    
    			DeleteDC( hdcMem );
    
    			ReleaseDC( hwnd, hdc ); 
    
    			return 0;
    		}
    

    Hat jemand ne Idee?

    Habs auch schon unter WM_PAINT mit den entsprechenden BeginPaint() und EndPaint() versucht. Auch die Funktion LoadBitmap ist mir nicht fremd.

    Leider funzt es wirklich alles nicht.

    Die Bilddatei liegt im Debug-, im Release- und auch im Projektordner.

    Ich habe es auch schon mit C:\bild.bmp (bzw in diesem Fall ja C:\\bild.bmp) probiert.

    Hat jemand ne Idee?

    Gruß, paSe.



  • Bekomme das mit den Bildern auch nicht hinn 😞
    Helft uns!



  • HBITMAP imgC = (HBITMAP)LoadImage(0,"deinedatei",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    			BeginPaint(deinhwnd, &Ps);
    			HDC hdc = GetDC(deinhwnd);
    			HDC memDC = CreateCompatibleDC(hdc);
    			HBITMAP hOld = (HBITMAP)SelectObject( memDC, imgC );
    
    			BitBlt(hdc, 30, 175, 300, 100, memDC, 0, 0, SRCCOPY);
    
    			ReleaseDC(deinhwnd, hdc);
    			ReleaseDC(deinhwnd, memDC);
    			EndPaint(deinhwnd, &Ps);
    


  • Username schrieb:

    HBITMAP imgC = (HBITMAP)LoadImage(0,"deinedatei",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    			BeginPaint(deinhwnd, &Ps);
    			HDC hdc = GetDC(deinhwnd);
    			HDC memDC = CreateCompatibleDC(hdc);
    			HBITMAP hOld = (HBITMAP)SelectObject( memDC, imgC );
    
    			BitBlt(hdc, 30, 175, 300, 100, memDC, 0, 0, SRCCOPY);
    
    			ReleaseDC(deinhwnd, hdc);
    			ReleaseDC(deinhwnd, memDC);
    			EndPaint(deinhwnd, &Ps);
    

    Klappt auch nicht!



  • unlimieD.paSe schrieb:

    Username schrieb:

    HBITMAP imgC = (HBITMAP)LoadImage(0,"deinedatei",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    			BeginPaint(deinhwnd, &Ps);
    			HDC hdc = GetDC(deinhwnd);
    			HDC memDC = CreateCompatibleDC(hdc);
    			HBITMAP hOld = (HBITMAP)SelectObject( memDC, imgC );
    
    			BitBlt(hdc, 30, 175, 300, 100, memDC, 0, 0, SRCCOPY);
    
    			ReleaseDC(deinhwnd, hdc);
    			ReleaseDC(deinhwnd, memDC);
    			EndPaint(deinhwnd, &Ps);
    

    Klappt auch nicht!

    Bei mir schon, "klappt auch nicht" ist wirklich eine gute erklärung des problemes. Wie wäre es wenn du einfach mal die return values der verschiedenen funktionen checkst und dann schaust wo was fehlschlägt?



  • Wenn ich statt ein Bild auszugeben, einen Text ausgeben kann, wird es wohl sicher nicht an falschen Funktionsrückgabewerten liegen!



  • unlimieD.paSe schrieb:

    Wenn ich statt ein Bild auszugeben, einen Text ausgeben kann, wird es wohl sicher nicht an falschen Funktionsrückgabewerten liegen!

    TextOut(..) hat aber nicht viel mit LoadImage usw zu tun. Mach es einfach.



  • OK. Nächtest Mal hat ich mein Maul und machs einfach.

    Funzt.

    Ich danke dem Anonymen!

    // EDIT:

    Geht das auch mit PNG's ? Funzt leider nur mit BMPs.



  • unlimieD.paSe schrieb:

    OK. Nächtest Mal hat ich mein Maul und machs einfach.

    Funzt.

    Ich danke dem Anonymen!

    // EDIT:

    Geht das auch mit PNG's ? Funzt leider nur mit BMPs.

    Soweit ich weiß, nein.

    1. Du schaust dir GDI+ an, das bietet support für bmp, jpeg, png.. usw
      http://msdn.microsoft.com/en-us/library/ms535370(VS.85).aspx

    2. Du benutzt eine img lib die dir das leben erleichtert, wie z.B http://cimg.sourceforge.net/





  • Danke, habe es mit GDI+ umgesetzt.


Anmelden zum Antworten