close
bool PicObject::LoadPic( const char* path ) { CxImage* newImage = new CxImage(); newImage->Load(L"D2.png"); size_t w = newImage->GetWidth(); size_t h = newImage->GetHeight(); SDL_Surface *f_res = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h,32,0,0,0,0); m_pic = SDL_DisplayFormatAlpha( f_res ); SDL_FreeSurface (f_res); f_res = m_pic; Uint8* res_data = (Uint8*)f_res->pixels; Uint8* buffer = 0; (Uint8*)newImage->GetBits(); long Size=0; newImage->Encode2RGBA(buffer, Size); printf("bpp %d\n", newImage->GetBpp()); // bpp == 24 for (size_t i = 0;i<h;++i) { for (size_t j=0;j<w;++j) { size_t sh = h-i-1; res_data[(sh*w+j)*4+0] = buffer[(i*w+j)*4+2]; res_data[(sh*w+j)*4+1] = buffer[(i*w+j)*4+1]; res_data[(sh*w+j)*4+2] = buffer[(i*w+j)*4+0]; res_data[(sh*w+j)*4+3] = buffer[(i*w+j)*4+3]; } } m_pic = SDL_DisplayFormatAlpha( f_res ); //Free the old image SDL_FreeSurface (f_res); //If the surface was optimized if (m_pic) return true; else return false; }
全站熱搜