Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Anonymous
unregistriert
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
LPDIRECTDRAWSURFACE7 CreateSurfaceFromBitmap(LPDIRECTDRAW7 lpDD7, LPSTR File, int dWidth, int dHeight) { // Device Context für das Bild und die Pberfläche HDC hBmDC, hSurfDC; // Handle der zu ladenden Bitmap HBITMAP hBM; // Oberflächenberechnung DDSURFACEDESC2 SurfDesc; // Zeiger auf die Oberfläche LPDIRECTDRAWSURFACE7 lpDDSurface; // Bild laden hBM = (HBITMAP)LoadImage(0,File,IMAGE_BITMAP,dWidth,dHeight,LR_LOADFROMFILE); // ist ein Fehler während des Ladens aufgetreten? if (hBM == NULL) { return NULL; } // Oberflächenbeschreibung initialisieren ZeroMemory(&SurfDesc,sizeof(SurfDesc)); SurfDesc.dwSize = sizeof(SurfDesc); // Caps, Höhe und Breite sollen berücksichtg werden SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT || DDSD_WIDTH; SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; SurfDesc.dwWidth = dWidth; SurfDesc.dwHeight = dHeight; // Oberfläche anlegen if (FAILED(lpDD7->CreateSurface(&SurfDesc,&lpDDSurface,NULL))) { return NULL; } // Device Context dr Oberfläche holen lpDDSurface->GetDC(&hSurfDC); // kompatiblen Device Context für das Bild anlegen hBmDC = CreateCompatibleDC(hSurfDC); // Bild in den Device Context holen SelectObject(hBmDC,hBM); // Bild in die Oberfläche kopieren BitBlt(hSurfDC,0,0,dWidth,dHeight,hBmDC,0,0,SRCCOPY); // Device Context freigeben lpDDSurface->ReleaseDC(hSurfDC); // Device Context und Bild löschen DeleteDC(hBmDC); // Grafik löschen DeleteObject(hBM); // Zeiger auf die Oberfläche zurückgeben return lpDDSurface; |
Quellcode |
|
1 |
LPDIRECTDRAWSURFACE7 lpDDSurface = CreateSurfaceFromBitmap(lpDD7,"\\gfx\\main.bmp",250,250); |
Quellcode |
|
1 2 3 4 |
if(FAILED(lpDDSPrimary->BltFast(10,10,lpDDSurface,NULL,DDBLTFAST_WAIT))) { Error("Fehler beim Kopieren der Bitmap"); } |
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
//************** NON CLASS RELATED FUNCTION **************************************************/ // DirectDraw Load Bitmap (to surface) IDirectDrawSurface* DDLoadBitmap(IDirectDraw* pdd, LPCSTR szBitmap) { HBITMAP hbm; BITMAP bm; IDirectDrawSurface *pdds; // Load Image for loading from Disk hbm = (HBITMAP)LoadImage(NULL, szBitmap, IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION); if(hbm == NULL) { return NULL; } GetObject(hbm, sizeof(bm), &bm); // size // Create Surface for this Bitmap int cw = bm.bmWidth; int ch = bm.bmHeight; MXWIDTH = cw; MXHEIGHT = ch; pdds = CreateOffScreenSurface(pdd, bm.bmWidth,bm.bmHeight); if(pdds) { DDCopyBitmap(pdds, hbm, bm.bmWidth,bm.bmHeight); } DeleteObject(hbm); return pdds; } mxbitmap DDLoadBitmapX(IDirectDraw* pdd, LPCSTR szBitmap) { HBITMAP hbm; BITMAP bm; IDirectDrawSurface *pdds; // Load Image for loading from Disk hbm = (HBITMAP)LoadImage(NULL, szBitmap, IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION); mxbitmap xbm; if(hbm == NULL) { xbm.surf = NULL; return xbm; } GetObject(hbm, sizeof(bm), &bm); // size // Create Surface for this Bitmap int cw = bm.bmWidth; int ch = bm.bmHeight; pdds = CreateOffScreenSurface(pdd, bm.bmWidth,bm.bmHeight); if(pdds) { DDCopyBitmap(pdds, hbm, bm.bmWidth,bm.bmHeight); } DeleteObject(hbm); xbm.surf = pdds; xbm.w = cw; xbm.h = ch; return xbm; } |
Zitat von »"t10ottoo"«
Quellcode
1 2 // Caps, Höhe und Breite sollen berücksichtg werden SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT || DDSD_WIDTH;
Zitat
Quellcode
1 2 // Caps, Höhe und Breite sollen berücksichtg werden SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT || DDSD_WIDTH;
Werbeanzeige