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

Qt Discussion :

Sauvegarde disque d'une scene


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut Sauvegarde disque d'une scene
    Bonjour,

    Je souhaiterais enregistré en format JPG une QGraphicsScene (composée de QGraphicsItem...)

    J'ai déjà codé la partie mais rien n'est enregistré (aucun fichier créé)

    Voici mon code de sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void MaClasse::save()
    {
      QString fileName = QFileDialog::getSaveFileName(this, tr("Save Bargraph Image"),
                                                      "./bargraph.jpg",
                                                      tr("JPEG (*.jpg)"));
      if (fileName != "")
        {
          QImage img;
          QPainter painter(&img);
          _scene->render(&painter);
          img.save(fileName);
        }
    }
    _scene est mon pointeur vers la QGraphicsScene.

    A noté que avec le debug, j'obtiens à la création du painter :

    (gdb) warning: QPainter::begin: Paint device returned engine == 0, type: 3

    Ensuite pendant l'exécution de render() j'ai beaucoup de warning :
    [...]
    warning: QPainter::save: Painter not active

    warning: QPainter::setClipRect: Painter not active

    warning: QPainter::setWorldTransform: Painter not active

    warning: QPainter::worldTransform: Painter not active
    [...]


    Quelqu'un aurait une piste pour savoir d'où provient l'erreur ?

  2. #2
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Salut,
    j'ai vu l'exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     QGraphicsScene scene;
     scene.addItem(...
     ...
     QPrinter printer(QPrinter::HighResolution);
     printer.setPaperSize(QPrinter::A4);
     
     QPainter painter(&printer);
     scene.render(&painter);
    Cela correspond à ce que tu fais pourtant :s

    J'ai vu par ci par là un souci de version, une piste...


    Attention juste à la création de ton QPainter, c'est un constructeur par surcharge qui fait un begin().
    Essaye de décomposer les étapes de création, pour cibler le problème, mais je pense pas que cela va donner quelque chose...

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    essai d'ajouter une taille à ton image avant de le passer au painter.

  4. #4
    Membre éprouvé Avatar de sardik
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Par défaut
    Citation Envoyé par yan Voir le message
    essai d'ajouter une taille à ton image avant de le passer au painter.
    Oui en effet ça fonctionne maintenant... Je pensais que le render allait faire le resize de lui-même selon la taille de la scene...


    Merci

  5. #5
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Regardes ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    painter->begin(0); // impossible - paint device cannot be 0
     
     QPixmap image(0, 0);
     painter->begin(&image); // impossible - image.isNull() == true;
     
     painter->begin(myWidget);
     painter2->begin(myWidget); // impossible - only one painter at a time
    Si ton QImage est null...

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

Discussions similaires

  1. Sauvegarde sur disque d'une classe
    Par AlfredKr dans le forum Débuter
    Réponses: 6
    Dernier message: 14/07/2014, 12h58
  2. charger une scene dans la memoire de la carte video
    Par Arnaudv6 dans le forum OpenGL
    Réponses: 10
    Dernier message: 11/09/2004, 01h44
  3. [FLASH 5]un bouton dans une image pour revenir sur une scene
    Par patato valdes dans le forum Flash
    Réponses: 7
    Dernier message: 28/04/2004, 20h21
  4. basculer d'une scene a l'autre
    Par singe dans le forum OpenGL
    Réponses: 4
    Dernier message: 10/12/2003, 18h00
  5. generer une image bitmap a partir d'une scene OGL
    Par FreshLog dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/07/2003, 11h29

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