|
|
Auteur : Clément.S Créé : le 28/11/2006 12:58:32 Modifié : le 11/01/2008 21:54:56 Noter et commenter ce tutoriel Imprimer ce tutoriel |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL; SDL_Event event; int continuer = 1; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(500, 500, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Faire des rotations avec SDL_gfx", NULL); while(continuer) { SDL_PollEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); SDL_Flip(ecran); } SDL_FreeSurface(ecran); SDL_Quit(); return EXIT_SUCCESS; } |
1 | #include <SDL/SDL_rotozoom.h>
|
1 | SDL_Surface * rotozoomSurface (SDL_Surface *src, double angle, double zoom, int smooth); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_rotozoom.h> #define TEMPS 30 // Le temps qu'il y a entre chaque augmentation de l'angle. int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *image = NULL, *rotation = NULL; SDL_Rect rect; SDL_Event event; double angle = 0; int continuer = 1; int tempsPrecedent = 0, tempsActuel = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(500, 500, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Faire des rotations avec SDL_gfx", NULL); image = SDL_LoadBMP("image.bmp"); rect.x = 150; rect.y = 150; while(continuer) { SDL_PollEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; } tempsActuel = SDL_GetTicks(); if (tempsActuel - tempsPrecedent > TEMPS) { angle += 2; //On augmente l'angle pour que l'image tourne sur elle-même. tempsPrecedent = tempsActuel; } else { SDL_Delay(TEMPS - (tempsActuel - tempsPrecedent)); } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); rotation = rotozoomSurface(image, angle, 1.0, 1); //On transforme la surface image. SDL_BlitSurface(rotation , NULL, ecran, &rect); //On affiche la rotation de la surface image. SDL_FreeSurface(rotation); //On efface la surface rotation car on va la redéfinir dans la prochaine boucle. Si on ne le fait pas, cela crée une fuite de mémoire. SDL_Flip(ecran); } SDL_FreeSurface(ecran); SDL_FreeSurface(image); SDL_Quit(); return EXIT_SUCCESS; } |


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_rotozoom.h> #define TEMPS 30 // Le temps qu'il y a entre chaque augmentation de l'angle. int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *image = NULL, *rotation = NULL; SDL_Rect rect; SDL_Event event; double angle = 0; int continuer = 1; int tempsPrecedent = 0, tempsActuel = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(500, 500, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Faire des rotations avec SDL_gfx", NULL); image = SDL_LoadBMP("image.bmp"); while(continuer) { SDL_PollEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; } tempsActuel = SDL_GetTicks(); if (tempsActuel - tempsPrecedent > TEMPS) { angle += 2; //On augmente l'angle pour que l'image tourne sur elle-même. tempsPrecedent = tempsActuel; } else { SDL_Delay(TEMPS - (tempsActuel - tempsPrecedent)); } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); rotation = rotozoomSurface(image, angle, 1.0, 1); //On transforme la surface image. //On positionne l'image en fonction de sa taille. rect.x = 200 - rotation->w / 2; rect.y = 200 - rotation->h / 2; SDL_BlitSurface(rotation , NULL, ecran, &rect); //On affiche la rotation de la surface image. SDL_FreeSurface(rotation); //On efface rotation car on va la redéfinir dans la prochaine boucle. Si on ne le fait pas, cela crée une fuite de mémoire. SDL_Flip(ecran); } SDL_FreeSurface(ecran); SDL_FreeSurface(image); SDL_Quit(); return EXIT_SUCCESS; } |
:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_rotozoom.h> #define TEMPS 30 // Le temps qu'il y a entre chaque augmentation de l'angle. int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *image = NULL, *rotation = NULL; SDL_Rect rect; SDL_Event event; double angle = 0; double zoom = 1; int sens = 1; int continuer = 1; int tempsPrecedent = 0, tempsActuel = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(500, 500, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Faire des rotations avec SDL_gfx", NULL); image = SDL_LoadBMP("image.bmp"); while(continuer) { SDL_PollEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; break; } tempsActuel = SDL_GetTicks(); if (tempsActuel - tempsPrecedent > TEMPS) { angle += 2; //On augmente l'angle pour que l'image tourne sur elle-même. tempsPrecedent = tempsActuel; } else { SDL_Delay(TEMPS - (tempsActuel - tempsPrecedent)); } SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); rotation = rotozoomSurface(image, angle, zoom, 0); //On transforme la surface image. //On repositionne l'image en fonction de sa taille. rect.x = event.button.x - rotation->w / 2; rect.y = event.button.y - rotation->h / 2; SDL_BlitSurface(rotation , NULL, ecran, &rect); //On affiche la rotation de la surface image. SDL_FreeSurface(rotation); //On efface la surface rotation car on va la redéfinir dans la prochaine boucle. Si on ne le fait pas, cela crée une fuite de mémoire. if(zoom >= 2){sens = 0;} else if(zoom <= 0.5){sens = 1;} if(sens == 0){zoom -= 0.02;} else{zoom += 0.02;} SDL_Flip(ecran); } SDL_FreeSurface(ecran); SDL_FreeSurface(image); SDL_Quit(); return EXIT_SUCCESS; } |
).
233
Zér0s connectés |
7
requêtes |
0.1427s
(0.128s)
Changer de design -
Revue de presse -
En savoir plus -
Plan du site
Nous contacter -
Mentions légales
- Publicité
Politique d'accessibilité -
Fil RSS -
XHTML 1.0 -
CSS 2.0
Y'a plus rien à lire, faut remonter maintenant !