000
05.04.2007, 20:08 Uhr
kurt
|
hallo leute,
ich hab in einen anderen forum ne funktion gefunden die png dateien läd und in einem LPDIRECTDRAWSURFACE7 speichert mithilfe der Corona-Lib.
C++: |
LPDIRECTDRAWSURFACE7 CreateSurfaceFromPNG(LPCTSTR File) { // Oberflächenbeschreibung DDSURFACEDESC2 SurfDesc; // Zeiger auf die Oberfläche LPDIRECTDRAWSURFACE7 lpDDSurface = NULL;
int dWidth; //Breite des Bildes int dHeight; //Höhe des Bildes LPSTR lpzielSpeicher; //Zielspeicher LPSTR lpQuellSpeicher; //Quellspeicher
corona::Image *pImage = corona::OpenImage(File,corona::FF_AUTODETECT,corona::PF_R8G8B8A8); //Bild wird geladen corona::ConvertImage(pImage,corona::PF_B8G8R8A8); //Bild wird in eine BMP datei konvertiert ? dWidth = pImage->getWidth(); dHeight = pImage->getHeight(); void *pPixels = pImage->getPixels(); // Oberflächenbeschreibung initialisieren ZeroMemory(&SurfDesc, sizeof(SurfDesc)); SurfDesc.dwSize = sizeof(SurfDesc);
SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; SurfDesc.dwWidth = dWidth; SurfDesc.dwHeight = dHeight;;
if(FAILED(lpDD->CreateSurface(&SurfDesc,&lpDDSurface,NULL))) { return 0; }
lpDDSurface->Lock(NULL,&SurfDesc, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL);
lpzielSpeicher = (LPSTR)SurfDesc.lpSurface; lpQuellSpeicher = (LPSTR)(&pPixels);
for(int j=0;j<dHeight;j++) { memcpy(lpzielSpeicher,lpQuellSpeicher,dWidth); //kopiert falschen speicher lpzielSpeicher+= SurfDesc.lPitch; lpQuellSpeicher -= SurfDesc.dwWidth; }
lpDDSurface->Unlock(NULL);
delete pImage;
return lpDDSurface; }
|
www.zfx.info/DisplayThread.php?MID=152511#152511
ich will dieses Surface in ein CSurface reinhaben... das mach ich der Funktion CSurface::Create(LPDIRECTDRAWSURFACE7 ddsd)...
dann gibbet es aber einen fehler.. kann mir jemand helfen.. BÜTTE
MFG kurt -- der tod ist sicher... das leben nicht... !! Dieser Post wurde am 05.04.2007 um 20:09 Uhr von kurt editiert. |