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 :

Rotation d'une image


Sujet :

Qt

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut Rotation d'une image
    Bonjour,

    je souhaite effectuer la rotation d'une image en fonction de certains paramètres qui evoluent au cours du temps. Pour l'instant j'utilise un QPainter et la fonction rotate, le problème c'est que je souhaite faire tourner mon image autour de son centre et non pas autour du point situé en haut à gauche du QPainter.

    Si je n'ai pas été clair n'hésitez pas à me demandez d'autres informations.

  2. #2
    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
    Salut.
    Pourquoi tu n'utilise pas les QGraphics?

    sinon, il faut comprendre comment fonctionne les transformations du QPainter. En simple, tu positionne et oriente ton pinceau puis tu dessine. Comme tu veux faire une rotation par le centre de l'image, tu as trois transformation à faire

    1- tu positionne ton painter là ou sera affiché le centre de l'image
    2- tu oriente ton painter pour la rotation
    3- tu déplace ton painter de (-w/2 , -h/2) pour faire correspondre le centre de l'image à dessiner.

    Petit code
    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
    39
    40
    41
    42
    43
    #include <QtGui>
     
    class Widget : public QWidget
    {
        Q_OBJECT
        QPixmap pix;
        QTimeLine m_t;
     
    public:
        Widget(QWidget *parent = 0)
            : QWidget(parent),pix("c:/Clipboard01.jpg")
        {
     
            connect(&m_t,SIGNAL(valueChanged(qreal)),this,SLOT(update()));
            m_t.start();
            m_t.setLoopCount(0);
            m_t.setDuration(4000);
        }
       void paintEvent(QPaintEvent *)
       {
           QPainter p(this);
           //position du centre de l'image
           p.translate(width()/2,height()/2);
     
           //rotation à appliquer
           p.rotate(m_t.currentValue ()* 360);
           //translation de l'image pour faire correspondre le centre.
           p.translate(-pix.width()/2,-pix.height()/2);
     
           p.drawPixmap(0,0,pix);
       }
    };
     
    #include "main.moc"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
     
        return a.exec();
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    merci de ta réponse cela m'a bien aidé, cependant j'y ai apporté quelques modifications, ne sachant pas trop comment fonctionne les QTimeLine j'ai décidé de m'en passer, j'ai ajouté un attribut rotation en private qui permet de choisir l'angle de la rotation à effectuer et une méthode setRotation qui modifie l'attribut rotation et qui effectue un update() cependant lorsque j'appelle cette méthode l'image ne tourne pas.

    A noter que lorsque je fixe rotation a 90° par exemple (dans le constructeur), l'image tourne bien de 90°

    Une Idée?

  4. #4
    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
    Citation Envoyé par kokomaniak Voir le message
    cependant lorsque j'appelle cette méthode l'image ne tourne pas.
    Sans code difficile de répondre

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    j'ai trouvé la solution à mon problème, je te remercie de encore de ta précieuse aide bonne continuation

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Quelle est donc la solution à ton problème ? Si tu l'as eu, quelqu'un d'autre pourrait aussi l'avoir et aimerait avoir la réponse .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

Discussions similaires

  1. Rotation d'une image 2D
    Par FidoDido® dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 29/06/2011, 11h55
  2. Rotation d'une image.
    Par poly128 dans le forum Delphi
    Réponses: 4
    Dernier message: 15/05/2006, 12h26
  3. rotation d'une image
    Par KHEOPS1982 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/12/2005, 17h21
  4. Rotation d'une image TIFF
    Par Tub-95 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 14/10/2005, 20h56
  5. Définir un angle de rotation pour une image
    Par mateo.14 dans le forum C++
    Réponses: 5
    Dernier message: 25/03/2005, 14h43

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