IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

wxBitmap : IsOk retourne false


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut wxBitmap : IsOk retourne false
    Bonjour à tous,
    Je me heurte actuellement à un drole de probleme. J'e dessine dans une wxBitmap par l'intermediaire d'un wxMemoryDC; le probleme intervient lors de la creation d'une wxBitmap. Je fais un truc tout bête:
    wxBitmap bitmap(800,800);
    Or, dans certains cas, bitmap.IsOk() retourne false juste apres la construction de l'objet (et il devient impossible de la manipuler). Des que cela arrive, il me dvient impossible, dans la suite du programme, de creer des wxBitmap: IsOk() retourne toujours false.
    J'ai vu que le IsOk() cherche en fait à determiner si le membre m_refData (hérité de wxObject) est nul ou non. Quelqu'un aurait-il une idée?

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Hypothèse : tu as trop de handle ouvert et donc il n'y en a plus de disponible ?

  3. #3
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Hello,
    Je ne pense pas que ce soit ca, apres tests je peux creer plein de wxBitmap (bien plus que mes besoins en tout cas) sans probleme. Il y a juste une zone de mon programme ou cela ne marche pas. Les conditions de plantage sont assez particuliere: je lance ma fonction dans une fenetre, ca marche (je peux la lancer autant de fois que voulu, ca marchera toujours). Je lance ensuite cette fonction dans une deuxieme fenetre (meme classe que la premiere) et là ca crash. Code de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    vigra::UInt16Image ROIGenerator::GetROILabel(int width,int height)
    {   
    	wxBitmap m_bit(width,height);
    	bool ok1 = m_bit.IsOk();  // retourne false
     
    	{
                 wxMemoryDC dc(m_bit);
    	ComponentHandler::type_list & list = m_handler.GetList();
    	ComponentHandler::type_list::iterator it = list.begin();
    	int i = 2;
    	for(; it != list.end(); ++it, ++i)
    		static_cast<ShapeComponent*>( (*it).get() )->GetShape()->Draw(dc,i,width,height);
     
    	}
                 wxImage im = m_bit.ConvertToImage();
     
    	m_roi_labellisee = vigra::UInt16Image(width,height);
     
    	unsigned short val;
    	unsigned char g,b;
    	unsigned char *ptr = im.GetData();
    	for(int y=0; y<height; y++)
    		for(int x=0; x<width; x++)
    		{
    			int ind = (y*MAXWIDTH+x)*3;
    			g = ptr[ind + 1];
    			b = ptr[ind + 2];
    			//val = toNumber( wxColour(0,im.GetGreen(x,y),im.GetBlue(x,y)) );
    			val = toNumber( wxColour(0,g,b ));
    			if( val == 0 )
    				m_roi_labellisee(x,y) = 0;
    			else
    				m_roi_labellisee(x,y) = val;
    		}
     
    	return m_roi_labellisee;
    }

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Une question : es-tu en multi-thread ?
    Autre piste : as-tu tracé les paramètres (width/height) pour voir s'ils sont valides ?

  5. #5
    Membre expérimenté Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Par défaut
    Salut,
    Il n'y a pas de multithread lorque ca crash. Les parametres width et height sont valide au plantage (tracage avec le debuger de visual studio) et valent generalement 800 et 800 (peut etre que c'est trop justement). J'avais trouvé une astuce bidon pour contourner le probleme : je declarais m_bit comme variable membre de la class ROIGenerator et je faisais simplemement m_bit=wxBitmap(width,height) ce qui fonctionnait. Par contre, Le crash se deplacait à l'utilisation suivante d'une wxBitmap dans le programme.

    EDIT : apres tests, changer les dimensions de la bitmap ne donne aucun resultat

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Avec visual, tu peux entrer en mode debug dans le constructeur de wxBitmap. Est-ce CreateCompatibleBitmap qui retourne NULL ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] mysqli_query retourne FALSE
    Par scorzen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/02/2009, 11h04
  2. Réponses: 4
    Dernier message: 17/09/2008, 13h05
  3. Requete mysql effectuée mais qui retourne false?
    Par lysandre dans le forum Requêtes
    Réponses: 8
    Dernier message: 24/03/2008, 16h55
  4. [php 5.1.2][bug?]get_cfg_var retourne false
    Par jeff_! dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2006, 13h33
  5. [PDO] Ma requêtes préparées me retourne false
    Par jeff_! dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/05/2006, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo