Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo



Qu'est-ce que Graphics View ?
auteur : Benjamin Poulain
Graphics View est une infrastructure qui permet de dessiner des scènes 2D complexes.

Graphics View permet de:
  • dessiner des éléments en 2D
  • faire interagir l'utilisateur avec ces éléments
  • d'appliquer des transformations avancées sur les éléments
  • d'animer les éléments
Voici un exemple minimaliste pour montrer quelques possibilités de Graphics View.
L'exemple insère une boîte de dialogue dans la scène, et la déforme:

#include <QApplication >
#include <QGraphicsScene>
#include <QGraphicsProxyWidget>
#include <QGraphicsView>
#include <QFileDialog>
 
int main(int argc, char **argv)
{
   QApplication app(argc, argv);
   QGraphicsScene scene;
   QGraphicsView view(&scene);
 
   QFileDialog fileDialog;
   QGraphicsProxyWidget *item = scene.addWidget(&fileDialog);
   item->rotate(-15);
   item->shear(-0.5, 0);
 
   view.resize(800, 600);
   view.show();
   return app.exec();
}

Comment accélérer Graphics View ?
auteur : Benjamin Poulain
Si vous avez un problème de vitesse avec Grahics View, commencez par vérifiez que le problème de vitesse ne se situe pas dans un de vos items. Graphics View est extrêmement performant, il n'est pas inhabituel d'y dessiner plusieurs milliers d'éléments (essayez la demo "chip" par exemple). Les problèmes de vitesse sont généralement dû à un graphics item qui se dessine trop lentement, ou à des rafraichissements abusifs.

Si le problème ne vient pas de là, vous pouvez utiliser un backend plus performant pour dessiner. Dessiner avec les backends de la plateforme est assez lent, Qt contourne le problème en dessinant sur un format interne optimisé. Cela peut être configuré en ajoutant "-graphicssystem raster" ou "-graphicssystem opengl" (expérimental dans Qt 4.5) dans les options de l'application. Notez que l'option raster ne change rien pour Windows car c'est déjà le backend par défaut.
view.setViewport(new QGLWidget); 
Si cela n'est toujours pas suffisant, il vous faut optimiser précisément votre vue à l'aide des options de QGraphicsView. Une première option à considérer est renderHints. Cette option permet de configurer les paramètres du QPainter utilisé pour dessiner la scène. Si vous utilisez l'antiAliasing par exemple, cela ralenti le dessin des items.
view.setRenderHint(QPainter::Antialiasing, false);
view.setRenderHint(QPainter::TextAntialiasing, false);
Un autre paramètre utile est optimizationFlags. Cette propriété permet de changer les paramètres de bas niveau du dessin de la scène. Par exemple, concevoir les items pour pouvoir utiliser QGraphicsView::DontSavePainterState est important si les items sont très nombreux. À la différence des autres options, les paramètres de optimizationFlags impliquent des effets de bords sur le rendu de la scène. Ne changez ce paramètre que si vos items sont conçus en conséquence. Finalement, il existe le paramètre cacheMode pour accélérer le rendu du fond de la vue. Le cacheMode permet de demander à la vue de créer un cache pour l'image de fond. Cette option n'est utile que si le fond est long à dessiner, par exemple s'il s'agit d'une image, d'un dégradé ou si la transparence est utilisée.
view.setCacheMode(QGraphicsView::CacheBackground);


Consultez les autres F.A.Q's


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com