Bmp Datei Laden und zeichnen
-
Hab mir in den letzten 2 Stunden folgenden Code mithilfe der MSDN zusammengebsatellt der aber leider nicht funktionieren will. Wäre schön
wenn wer ne Ahnung hätte wo der Fehler liegen könntecase WM_PAINT: { PAINTSTRUCT ps; HBITMAP Bild; HDC hdc,hdcMem; hdc = BeginPaint(hWnd,&ps); Bild = (HBITMAP)LoadImage( NULL, // handle of the instance containing the image "File.bmp", IMAGE_BITMAP, // type of image 0, // desired width 0, // desired height LR_LOADFROMFILE // load flags ); GetObject (Bild, sizeof (BITMAP), &Bild) ; CopyImage( Bild, // handle of the instance containing the image IMAGE_BITMAP, // type of image 0, // desired width 0, // desired height LR_COPYRETURNORG // load flags ); hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, Bild) ; Bild = (HBITMAP)BitBlt(hdc,50,50,10,10,hdcMem,0,0,SRCCOPY); EndPaint(hWnd,&ps); return 0; }
-
Ich weiß nicht, warum dein Code nicht funktioniert. Müsste er eigentlich, obwohl du ein paar absolut überflüssige Sachen drinne hast.
- Lass das CopyImage weg. Wozu?!
- Der Rückgabewert von BitBlt() ist BOOL. Ich verstehe nicht, wieso du diesen BOOL-Wert deinem Bild zuweist.Außerdem hast du vergessen, das Bild am Ende wieder aus dem DC herauszuholen und das DC zu löschen.
-
Man lädt nicht das Bild in jedem WM_PAINT neu.
-
Das außerdem noch, ja!
-
HDC hDC, hMemDC; HBITMAP hBitmap; PAINTSTRUCT Paint; case WM_CREATE: //case WM_INITDIALOG: hBitmap = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1)); break; //... case WM_PAINT: hDC = BeginPaint(hWnd,&Paint); hMemDC = CreateCompatibleDC(hDC); SelectObject(hMemDC,hBitmap); BitBlt(hDC,0,0,128,128,hMemDC,0,0,SRCCOPY); EndPaint(hWnd,&Paint), DeleteDC(hMemDC); return 0; //...
-
wenn hBitamp static ist könnte es funktionieren ... oder ?
mfg
RB