2012-01-04 1 views
2

Comment afficher plusieurs images - chacune dans une fenêtre - avec l'utilisation de CImg?Comment afficher quelques images (chacune dans une fenêtre séparée) avec CImg?

Lorsque je tente quelque chose comme ça

 cimg_library::CImg<unsigned char> image(s.c_str()); 
     cimg_library::CImgDisplay main_disp(image, s.c_str() ); 
     while (!main_disp.is_closed()) 
      main_disp.wait(); 

Je dois fermer chaque fenêtre pour se rendre à l'un NECT et avec ceci:

 cimg_library::CImg<unsigned char> image(s.c_str()); 
     cimg_library::CImgDisplay main_disp(image, s.c_str() ) 

Ils disparaissent l'un après l'autre.

+0

Lorsque j'avais fait l'erreur d'utiliser CImg, je n'ai pas résolu ce problème pour X et Windows. Ma solution était de laisser tomber CImg et aller à wxWidgets. C'était une bonne décision. – thiton

Répondre

1

Les fenêtres ouvertes par CImg doivent être affichées à l'intérieur d'une boucle d'événements. La boucle d'événement dans l'extrait de code ci-dessus est le bloc dans l'instruction while.

while (!main_disp.is_closed()) 
      main_disp.wait(); 

Le code dans le poste dessine la fenêtre dans le cadre du constructeur, le code entre dans la boucle d'événements et appels attente(). L'appel à wait() met l'application en pause jusqu'à ce qu'un "événement" se produise. L'événement est une sorte d'entrée. Il peut s'agir d'un clic de souris, d'un mouvement de la souris, d'une frappe sur le clavier ou même d'une requête de rafraîchissement du système d'exploitation. Lorsqu'un événement est reçu, l'application recommence à s'exécuter.

Je n'ai pas eu le temps d'essayer le code, mais ce code devrait afficher deux fenêtres en même temps:

cimg_library::CImg<unsigned char> image1(f1.c_str()); 
cimg_library::CImgDisplay disp1(image1, f1.c_str() ); 
cimg_library::CImg<unsigned char> image2(f2.c_str()); 
cimg_library::CImgDisplay disp2(image1, f2.c_str() ); 

//start event loop 
while(true) { 
    //All the interactive code is inside the event loop 
    cimg_library::CImgDisplay::wait(disp1, disp2); 
} 

Le tutoriel (http://cimg.eu/reference/group__cimg__tutorial.html) a un exemple de deux fenêtres ouvertes et spectacles comment vérifier des choses comme des clics de souris et la position de la souris.

+0

Merci beaucoup pour ça :)! Je vais essayer le code plus tard, je vais poster les résultats ici (que cela fonctionne ou non). – Patryk

Questions connexes