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;
}

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(0) 人氣()