05. september 2006 - 14:08
Der er
8 kommentarer og 1 løsning
Vise .jpg billede i et vindue?
Hej Eksperter! Jeg har fundet nogle eksempler på hvordan hvordan man viser et bitmap billede, men det fylder sgu for meget. Derfor vil jeg gerne bruge jpg eller png eller hvad der nu er nemmest. Derudover er jeg også lidt i tvivl om hvordan jeg inkluderer billedet som en ressource i .exe -filen. er der nogle som har et godt forslag? Gerne med et eksempel. Mvh Ole
Annonceindlæg fra Kingston Technology
05. september 2006 - 14:41
#1
Hvilken C++ har du gang i? prøv at se på LoadFromFile om den kan klare jpg eller png.
05. september 2006 - 19:47
#2
Prøv at kikke på JDraw:
http://damb.dk/graphics.php Den kan vise .jpg billeder. Der burde være let at få den til at læse fra en resource.
06. september 2006 - 15:03
#3
Hmm ok! Jeg dropper det med jpg, det er vist for bøvlet for mig og holder mig i stedet til bmp. Derimod vil jeg gerne have et hint til hvordan jeg bruger bmp-billedet som ressource, så det ikke skal ligge ved siden af .exe-filen. jeg har inkluderer sample.bmp herunder i min rc-fil 1028 10 MOVEABLE PURE "E:\\6 - Programmering\\C++\\sample.bmp" og bruger følgende i main fil: HBITMAP LoadBMP(const char *FileName, UINT *Width, UINT *Height) { HBITMAP BitMap = (HBITMAP )LoadImage(0, FileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); if(!BitMap) MessageBox(0, "Failed to load image", "BitMap", MB_OK); else { BITMAP BitmapInfo; GetObject(BitMap, sizeof(BITMAP), &BitmapInfo); *Width = BitmapInfo.bmWidth; *Height = BitmapInfo.bmHeight; } return BitMap; } void OnPaint(HWND hwnd) { PAINTSTRUCT PaintStruct; HDC dc = BeginPaint(hwnd, &PaintStruct); HDC MemDC = CreateCompatibleDC(dc); HBITMAP OldBitmap = (HBITMAP )SelectObject(MemDC, Bitmap); BitBlt(dc, 0, 0, ImageWidth, ImageHeight, MemDC, 0, 0, SRCCOPY); SelectObject(MemDC, OldBitmap); DeleteObject(MemDC); EndPaint(hwnd, &PaintStruct); }
06. september 2006 - 15:09
#4
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { //Bitmap = LoadBMP("sample.bmp", &ImageWidth, &ImageHeight); Bitmap = LoadBMP("sample.bmp", &ImageWidth, &ImageHeight); return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc); }
06. september 2006 - 20:10
#5
BitMap = (HBITMAP )LoadImage(InstanceHandle, MAKEINTRESOURCE(1028), IMAGE_BITMAP, 0, 0, 0); InstanceHandle er hInstance fra WinMain 1028 er det samme 1028 som du har i .rc filen.
07. september 2006 - 10:11
#6
Hmm den vil ikke godkende MAKEINTRESOURCE(1028) som bitmap. HBITMAP LoadBMP(HINSTANCE hInstance, UINT *Width, UINT *Height) { //HBITMAP BitMap = (HBITMAP )LoadImage(0, "sample.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); HBITMAP BitMap = (HBITMAP )LoadImage(hInstance, MAKEINTRESOURCE(1028), IMAGE_BITMAP, 0, 0, 0); if(!BitMap) MessageBox(0, "Failed to load image", "BitMap", MB_OK); else { BITMAP BitmapInfo; GetObject(BitMap, sizeof(BITMAP), &BitmapInfo); *Width = BitmapInfo.bmWidth; *Height = BitmapInfo.bmHeight; } return BitMap; } Den falder i, i if(!BitMap) så jeg ved ikke lige hvor det går galt. Jeg har tjekket stien i rc-filen og den er ok. har du et forslag?
07. september 2006 - 19:42
#7
Prøv at skrive dette i din .rc fil: 1028 BITMAP MOVEABLE PURE "sample.bmp" DVS BITMAP i stedet for 10, 10 er vist for rå data.
08. september 2006 - 11:12
#8
Jamen det var jo lige det der skulle til. Mange tak for hjælpen!
11. september 2006 - 12:34
#9
Jeg lukker og slukker...
Kurser inden for grundlæggende programmering