Syntyi tässä pieni ongelma, kun yritin pyöritellä kuvia SDL:n rotozoomilla. Kuvat pyörivät, mutta ei keskipisteen kohdalta. Kaikenmoisia sini viritelmiä kokeiltu on. Mikä neuvoksi?
Tällainen löytyi omien koodinpätkien seasta:
#include <SDL.h> #include <SDL_rotozoom.h> typedef double float_t; // Blittaa kuvan niin, että sen keskusta on annetuissa koordinaateissa void Blittaa(SDL_Surface * Src, float_t x, float_t y, SDL_Surface * Dest) { SDL_Rect Alue = { (int)(x - (Src->w >> 1) + 0.5), (int)(y - (Src->h >> 1) + 0.5), Src->w, Src->h }; SDL_BlitSurface(Src, 0, Dest, &Alue); } // Pyörittää ja kutsuu ylempää void RotozoomBlittaa( SDL_Surface * Src, float_t x, float_t y, SDL_Surface * Dest, double Kulma, double Skaalaus, int Smooth) { SDL_Surface * Temp = rotozoomSurface(Src, Kulma, Skaalaus, Smooth); Blittaa(Temp, x, y, Dest); SDL_FreeSurface(Temp); }
Pitää siis piirtää niin, että piirtofunktiolle annetaan keskipisteen koordinaatit. Tällainen piirtofunktio siirtää kuvaa sen leveyden mukaisesti, jolloin keskipiste tulee tosiaan siihen, mihin se haluttiin.
Isot kiitokset!
Aihe on jo aika vanha, joten et voi enää vastata siihen.