begin process at 2012 05 29 14:31:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

GUI

 > 

Probleme, creation d'une class traitant sur SDL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme, creation d'une class traitant sur SDL

jeudi 10 avril 2008 à 22:44:48 | Probleme, creation d'une class traitant sur SDL

kickbar

Bonjour a tous, voila j'ai un petit souci, dans l'un de mes methodes, je charge la fenetre principale, je colle une image, et la mystere, a l'execution, la fenetre s'affiche bien avec l'image mais ne reste visible que pendant 1/10 de seconde ^^, sachant que deriere je recupere un evenement un mode blocant (WaitEven)
la fenetre devrais rester visible, pour info lorsque la fenetre se ferme , sa coupe le prog, je suppose donc qu'une erreur SDL se produit...

voila mon code pour la class :


BONHOMME::BONHOMME(){   //CONSTRUCTEUR
                    SDL_Init(SDL_INIT_VIDEO);
                   
                     largeur_fenetre = 320 ;
                     longueur_fenetre = 640 ;
                     profondeur_fenetre = 32;
                    
                     titre_fenetre = "TITRE PAR DEFAULT";
                    
                     chemin_image = "defaut.bmp";
                    
                     //image =  SDL_LoadBMP(chemin_image.c_str());
                     transparence_image.rouge = 0;
                     transparence_image.vert = 0;
                     transparence_image.bleu = 0;
                    
                     position_image.x = 0;
                     position_image.y = 0;
                     }
                    
                    
BONHOMME::~BONHOMME(){
                 SDL_FreeSurface(fenetre);
                 SDL_FreeSurface(image);    
                 SDL_Quit();
                      }
                     
                     
void BONHOMME::init_affichage(){

    fenetre = SDL_SetVideoMode(longueur_fenetre, largeur_fenetre, profondeur_fenetre, SDL_HWSURFACE);
     SDL_WM_SetCaption(titre_fenetre.c_str(), NULL);
    image =  SDL_LoadBMP(chemin_image.c_str());
    SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB (image->format, transparence_image.rouge, transparence_image.vert, transparence_image.bleu)); // rend player 1 transparent
    SDL_BlitSurface(image, NULL, fenetre, &position_image); //colle image dans la fenetr
e
    SDL_Flip(fenetre);  // C'EST ICI QUE SA MERDE !!!!!!!!!!!!!!!!!!
}
    
    
void BONHOMME::new_image(std::string value){ // DEFINIT L'IMAGE A CHARGER
chemin_image.erase();
     chemin_image = value;
     //image =  SDL_LoadBMP(chemin_image.c_str());
     }
    
void BONHOMME::new_imageposition(int x, int y){ // DEFINIT LA POSITION DE L'IMAGE
     position_image.x = x;
     position_image.y = y;
     }
    
void BONHOMME::new_title(std::string value){ // DEFINIT LE TITRE DE LA FENETRE
titre_fenetre.erase();
     titre_fenetre = value;
     }
    
void BONHOMME::new_imagecolor(int value_rouge, int value_vert, int value_bleu){ // DEFINITION DES COULEURS A RENDRE TRANSPARENTE
     transparence_image.rouge = value_rouge;
     transparence_image.vert = value_vert;
     transparence_image.bleu = value_bleu;
     }
    
void BONHOMME::new_taillefenetre(int longueur, int largeur, int profondeur){ // DEFINIT LA TAILLE DE LA FENETRE
largeur_fenetre = largeur;
longueur_fenetre = longueur;
profondeur_fenetre = profondeur;
     }
    
    
void BONHOMME::evenement_blocant(){
 SDL_WaitEvent(&my_evenement);

}

void BONHOMME::evenement_passif(){
 SDL_PollEvent (&my_evenement);
      
}






MA DECLARATION DE CLASS DU FICHIER .H

#ifndef DEF_BONHOMME
#define DEF_BONHOMME

#include <SDL/SDL.h>
#include <string>

class BONHOMME
{
     
     
     
      public:
            
            
            
       BONHOMME();
       ~BONHOMME();
       void init_affichage(); // AFFICHE
      
       void new_image(std::string value); // DEFINIT UNE NOUVELLE IMAGE A CHARGER
       void new_imageposition(int x, int y); // DEFINIT LA POSITION DE L'IMAGE
       void new_title(std::string value); // DEFINIT UN NOUVEAU TITRE A LA FENETRE
      
       void new_imagecolor(int value_rouge, int value_vert, int value_bleu); // DEFINIT LA COULEUR DE L'IMAGE A RENDRE TRANSPARENTE
       void new_taillefenetre(int largeur, int longueur, int profondeur); // DEINIT LA TAILLE DE LA FENETRE
      
       void evenement_passif();
       void evenement_blocant();
      
      
      
       SDL_Event my_evenement;
      
       private:       
      
      
       SDL_Surface *fenetre;
       SDL_Surface *image;
      
       SDL_Rect position_image;
      
      
       int largeur_fenetre;
       int longueur_fenetre;
       int profondeur_fenetre;
       std::string titre_fenetre;
      
       std::string chemin_image;
      
       struct {
              int rouge;
              int vert;
              int bleu;
              }transparence_image;
             
      
             
      
             
      
       };     
            
            
   
#endif


**********************



dans tous les cas merci d'avance a tous ceux qui se pencheront sur mon probleme ;-)

mon mail : erwannludovic@free.fr


Cette discussion est classée dans : int, image, fenetre, sdl, bonhomme


Répondre à ce message

Sujets en rapport avec ce message

SDL : Affichage en multi thread ?! [ par ctx_man ] Bonjour tout le monde, SDL me pose un problème.Je voudrait faire du multi thread afin de séparer ma gestion clavier de mon affichage.voila un exemple SDL image et masque [ par Timidouveg ] Bonjour Je poste pour la première fois ici Je développe toutes sortes de petits programmes et aussi un projet de réalité virtuelle en C/C++ avec SDL/O Problème fenêtre SDL sous Linux [ par Neofabiensama ] Bonjour,Je poste aujourd'hui car je suis à cours d'idée sur un problème de fenêtre SDL. Je travaille actuellement sur un projet de visualisation 2D d' sdl et vc++2010 [ par hb2012 ] slt tout le monde, je sais bien mes amis que c'est pas possible d'afficher une image avec c++. par contre je m'adresse à vous pour savoir s'il existe parcourir l'image pixel par pixel et dessiner un rectangle entourant la zone noir en OpenCv [ par DANIA511 ] SVP, j'ai besoin de votre aide. je veux binariser une image et puis détecter les zones noirs, les découper, et les afficher . "bien sure j'ai utilisé retourner la classe dans une de ses méthodes (bibliotheques SDL) [ par BobZeFlyer ] Bonjour à tous, c'est mon premier message sur le forum, soyer indulgent svp pour toutes erreur ou répétitions de post. Etudiant, je suis actuellement SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface Problème avec la gestion d'évenement en SDL (à mon avis) [ par OA88 ] salut, je suis lancé dans la programmation du jeu motus en C en utilisaant SDL comme biblio graphique je trouve probléme dans la gestion du touche SDL redimentionnement d'image avec sdl [ par mounanedra ] salut, j'ai un problème svp qui me l'aide d'aprés ce lien: http://perso.numericable.fr/fvirtman/info/tuto/2_3_10_resize.cpp je ne compris pas commen Mettre à jour une fenêtre SDL [ par asprog ] Bonjour; je me suis chargée de faire un jeu de casse brique sous C++ en utilisant des classes que je dois les créer(orienté objet) ainsi que la bibl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales