Graphisme en 2D avec QT4
Graphisme en 2D avec QT4 Quelques notions Les classes qui vont bien Des animations ?
Graphisme en 2D avec QT4 Quelques notions Les classes qui vont bien Des animations ?
Quelques notions La scène C'est le théâtre des opérations. C'est dans une scène que tous les objets seront réellement présents. Une scène peut contenir des formes et du texte.
Quelques notions La vue C'est la visualisation de la scène. Pour une même scène, on peut avoir différentes vues.
Quelques notions Les formes Les différentes formes de base sont : le point la ligne le rectangle le polygone l'ellipse
Quelques notions Les effets Chaque forme peut avoir une couleur, une épaisseur, ou des effets divers. Idem pour le texte (avec des polices de caractères spécifiques en plus).
Graphisme en 2D avec QT4 Quelques notions Les classes qui vont bien Des animations ?
Les classes qui vont bien La scène QGraphicsScene abscisses (x) ordonnées (y)
Les classes qui vont bien La vue QGraphicsView
Les classes qui vont bien Les formes QPointF(x,y) QLineF(x1,y1,x2,y2) ou QLineF(p1,p2) ou QGraphicsLineItem QRectF(xGauche,yHaut,largeur,hauteur) ; ou QGraphicsRectItem QPolygon ou QGraphicsPolygonItem QGraphicsEllipseItem
Les classes qui vont bien Les effets (uniquement applicables sur les objets de type QGraphics####Item) QColor QBrush QPen Applicable avec des méthodes setBrush et setPen
Les classes qui vont bien Les effets QColor (int r, int g, int b, int a) r : [0..255] -> rouge g : [0..255] -> vert b : [0..255] -> bleu a : [0..255] -> transparence
Les classes qui vont bien Les effets QBrush(QColor c, BrushStyle s); QConicalGradient QRadialGradient QLinearGradient QPixmap
Les classes qui vont bien Les effets QPen(QBrush b, qreal largeur, PenStyle ps, PenCapStyle cap,PenJoinStyle join)
Les classes qui vont bien dimensionnement de la scene Création d'une vue Création d'une scene Exemple QGraphicsScene *maScene= new QGraphicsScene(); QGraphicsView *maVue=new QGraphicsView(); maScene->setSceneRect(0, 0, 400, 300) ; QPoint p1(10,10); QPolygon poly ; poly<<p1 ; poly<<QPoint(30,10)<<QPoint(60,50); maScene->addPolygon(poly) ; maVue->setGeometry(10,10,400,300) ; maVue->setScene(maScene) ; maVue->show(); Ajout d'un point au polygone Ajout d'un polygone à la scene dimensionnement de la vue association de la scene à la vue affichage de la scene
Les classes qui vont bien QPoint p1(10,10); QPolygon poly1 ; QGraphicsLineItem *ligne ; QGraphicsPolygonItem *polyI ; QGraphicsTextItem *monTexte; poly1<<p1 ; ligne=new QGraphicsLineItem(0,0,400,300); polyI=new QGraphicsPolygonItem(poly1); monTexte=new QGraphicsTextItem("bonjour"); monTexte->setPos(50,100) ; maScene->addItem(monTexte); maScene->addItem(polyI) ; maScene->addItem(ligne) ; maVue->setScene(maScene) ; maVue->show(); ajouter un objet à la scene positionner le texte en (50,100)
Graphisme en 2D avec QT4 Quelques notions Les classes qui vont bien Des animations ?
Des animations ? Déplacer des objets : Avant l'affichage de la vue: translate(offsetX, offsetY) ; Après l'affichage de la vue : moveBy(offsetX, offsetY) ; Déplacer l'objet de offsetX pixels sur l'axe des abscisses et de offsetY pixels sur l'axe des ordonnées
Des animations ? Les objets qui ne sont pas déplacer le polygone de +20 sur x et de +33 sur y QPoint p1(10,10); QPolygon poly ; QGraphicsLineItem *ligne ; QGraphicsPolygonItem *polyI ; poly<<p1 ; poly.translate(20,33); ligne=new QGraphicsLineItem(0,0,400,300); polyI=new QGraphicsPolygonItem(poly1); maScene->addItem(polyI) ; maScene->addItem(ligne) ; ligne->translate(-5,12); maVue->setScene(maScene) ; maVue->show(); déplacer la ligne de -5 sur x et de +12 sur y Les objets qui ne sont pas de type "item" ne peuvent plus être déplacés une fois qu'ils ont été ajoutés à la scène.
faire faire des aller-retour Des animations ? ligne=new QGraphicsLineItem(0,0,400,300); polyI=new QGraphicsPolygonItem(poly1); maScene->addItem(polyI) ; maScene->addItem(ligne) ; maVue->setScene(maScene) ; maVue->show() ; int pasx=1 ; int x=0; while(1){ ligne->moveBy(pasx,0) ; x+=pasx; if (x>=400) pasx=-1 ; if (x<=0) pasx=1; } faire faire des aller-retour à l'objet ligne sur l'axe des abscisses temps d'exécution : < 1 milliseconde
Des animations ? Il est possible de réaliser des animations chronométrées: QTimeLine QGraphicsItemAnimation
Conclusion Association vue <-> scène Notion d'objets d'une scène Possibilité d'ajouter des images