bmp oder jpg in Windows Fenster anzeigen - wie?
-
Hallo,
Ich habe schon mehrere Tutorials und Foren durchsucht, aber nichts passendes Gefunden.
Meistens war das Problem, dass es sich um irgendwelche Quellcode-fetzen handelte...Was ich wissen will, ist für Profis sicher nicht allzu schwer:
Wie zeige ich eine Bmp oder jpg in einem Windows Fenster an?
Freue mich auf Antwort, wenn sie nicht nur ein Fetzen Quellcode ist
MfG
Möchtegern-Geek
-
Das ist eigentlich nicht sehr schwer:
hbitmap = LoadImage (NULL,TEXT("Hier kommt der Pfad zum Bild hin, z.b C:\\programme\\bilder\\DasBild.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE); hdc_ram = CreateCompatibleDC(NULL); SelectObject (hdc_ram, hbitmap); BitBlt (hdc,50,50,100,100,hdc_ram,0,0,SRCCOPY); DeleteDC (hdc_ram); DeleteObject (hbitmap);
Zuerst packst du das bild ein einen objekt, anschließend läßt du es einfach zeichnen. Und man sollte natürlich nicht vergessen das objekt wieder zu schließen.
EDIT: Achja, dad funktioniert auch nur bei bitmaps, soweit ich weiß^^
-
Hi, lad dir mal dieses Projekt runter:
http://support.microsoft.com/kb/218972
Hier wird veranschaulicht wie man GIF-, JPG-, BMP-, ICO-, EMF- und WMF-Dateien läd und anzeigt.
MfG WilMen :xmas1:
-
...oder GDI+ nehmen, damit kannst du jpg, png etc. sowohl öffnen als auch speichern:
Using Images, Bitmaps, and Metafiles
-
hallo,
Danke erstmal für die Hilfe ich habe die mdsn mal durchforstet und habe ungefähr das von Showball gefunden,
aber:
@ Showball:
an welcher stelle des Fensters muss ich das denn Einfügen? case WM_Paint? case WM_???
und:
Mein Compiler (DevC++) behauptet immer, hbitmap noch nie gehört zu haben. muss ich noch einen Header einfügen?
oder muss ich das hier noch definieren?. . . { HDC hdc; PAINTSTRUCT ps; //hier hbitmap definieren???? switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); TextOut (hdc, 20, 20, "Blalalala", 20); . . .
MfG
Möchtegern-Geek
-
hBitmap ist nur der Name für ein HBITMAP handle
HBITMAP hBitmap;
dann müsste es funktionieren
-
geht leider nicht, denn jetzt gibt er diesen Fehler an:
53 invalid conversion from `void*' to `HBITMAP__*'
Ich glaube immernoch, dass mir ein header fehlt...
MfG
Möchtgern-Geek
-
switch (message) { case WM_PAINT: { PAINTSTRUCT ps; HDC hDC = BeginPaint (hWnd, &ps); // double buffering + bitmap blitten HDC hDCMem = CreateCompatibleDC(hDC); HGDIOBJ hOldBitmap = SelectObject (hDCMem, hBitmap); BitBlt(hDC, 0, 0, /*width*/100, /*height*/100, hDCMem, 0, 0, SRCCOPY); SelectObject(hDCMem, hOldBitmap); DeleteDC(hDCMem); TextOut (hDC, 10, 10, "Bitmap #001", 12); EndPaint(hWnd, &ps); } break;
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, TEXT("C:\\Programme\\MyApp\\MyData.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
müsstest du nur vorher setzen
Notfalls auch per static in deiner WindowProc ...