
esta genial

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúvoid rotarimagen(SDL_Surface *src, int x, int y, float zoomx, float zoomy, float angle)
{
// Superficie temporal con las modificaciones correspondientes
SDL_Surface *tmp;
// Posición donde dibujaremos la superficie en pantalla
SDL_Rect pos={x, y, 0, 0};
// Creamos superficie rotada y/o escalada sin anti-aliasing
tmp=rotozoomSurfaceXY(src, angle, zoomx, zoomy, 0);
// Arreglo posición de la imagen ya que la rotación
// es con respecto al centro de la imagen
pos.x -= (tmp->w - src->w) / 2;
pos.y -= (tmp->h - src->h) / 2;
// Dibujamos en pantalla la nueva superficie
// Nota: screen es la variable que nos devolvió
// la función SDL_SetVideoMode
SDL_BlitSurface(tmp, NULL, screen, &pos);
// Eliminamos de la memoria la superficie temporal
SDL_FreeSurface(tmp);
}
Cita de: EvilGoblin en 11 Septiembre 2010, 19:35 PM
...
rotozoom es una funcion un poco precaria, pero la unica q conozco. Sirve para darle zoom o rotar.
pero aveces distorciona un poco la imagen, asi que la recomendacion es siempre tener 2 surface 1 con el original y otra la q se va a mostrar
si lo rotas varias veces lo rotas siempre del original.
el zoom y el foco debe estar en 1, si solo deseas rotar.
es mejor usar imagenes PNG conoriginal = IMG_Load ("auto.png");
movimiento = rotozoomSurface (original, angulo, 1, 1);