shorzy
Messages postés94Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention 1 juin 2013
-
1 sept. 2009 à 10:43
shorzy
Messages postés94Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention 1 juin 2013
-
3 sept. 2009 à 10:30
Bonjour.
Je faisais du Dessin sous MFC (pas de Probl)
En passant sous Qt, quelque chose coinse.
si je dessine un trait
Painter.drawLine(250000,-2500000,49000000,315000000);
tout ce passe bien.
Mais si je Zoom le Trait met de plus en plus de Temps à se Dessiner.
Qq milli-secondes sans Zoom -> à ~2s une fois Zommer
A Quoi est ce due ???
(J'effectue le Zoom avec .scale)
[i]Les nombres sont importants, mais cela ne devrait pas crée de Problème...
(Normalement)
avec MFC tout Roule (jusqu'a des Nombres de "2 000 000 000")/i
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 2 sept. 2009 à 10:52
Hello,
Je vais ptet dire une connerie.
J'avais déjà remarqué que Qt avait dû mal avec les grandes coordonnées. Du coup, je translatais mon repère pour avoir les plus petite coordonnées possibles, en prenant le centre de la bounding box de mes objets comme origine...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
shorzy
Messages postés94Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention 1 juin 2013 2 sept. 2009 à 18:07
Je ne vois pas comment mettre ta proposition en oeuvre...
j'ai besoin de grandes coordonnées ET d'effectuer des Zooms
le coup du setClipRect ne Marche pas.
Même update(50,50,100,100), car même si la Zone update fais quelques Pixels, si il y a dans cette Zone
un 'Gros' Objet, il n'est qu'en partie représenté, mais le Proc. rame comme s'il avait tout l'Objet à représenter.
Personne n'a un Tuyau SVP
Je ne comprend pas que Qt puisse avoir un Tel Bug, il dois y avoir une Esquive toute simple, mais ça m'échappe !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 3 sept. 2009 à 09:29
En gros chuis dans la m.. et je peux rien y faire
A coeur vaillant, rien d'impossible
Voici un exemple illustrant mes propos:
- tu as un objet donc le centre est en (5000,5000)
- tu calcules que pour dessiner ceci en (0,0), il te faut une translation de (-5000,-5000)
- tu stockes cette translation dans ton prog (idéalement, dans l'objet gérant l'affichage)
- dans ta fonction d'affichage, tu appliques la translation à ton objet
--> pas de changement de coordonnées en interne, juste une translation à l'affichage
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
shorzy
Messages postés94Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention 1 juin 2013 3 sept. 2009 à 10:30
(...)
- Ok donc ton Objet à un Rectangle englobant de -2500,-2500,2500,2500
et tu divise par 2 les Coordonnées.
----------------------------------------------
Mais ce n'est pas ce que je veux faire :
J'ai un petit rectangle en bas a droite : (250,250,700,700)
Et une grande Ligne qui traverse ce Rectangle : (-2000000000,-2000000000,2000000000,2000000000)
quand je DéZoom, la Ligne est entièrement visible dans l'Ecran et ne met pas longtemps à s'afficher
Et on ne voit pas le Rectangle ( Trops Petit )
Quand je Zoom pour voire le Rectangle,
La Ligne déborde completement de l'Ecran !
Et la ça Rame !!!
Qt Semble vouloir Essayer de Dessiner la Totalité de la Ligne :
(-2000000000,-2000000000,2000000000,2000000000) Unité Logique
mais environs
(-200000000000000,-200000000000000,200000000000000,200000000000000) Unité Device (Vu le Zoom )
J'était sur MFC.
MFC s'en fiche que la Ligne représente :
(-200000000000000,-200000000000000,200000000000000,200000000000000) Pixels
Il ne Dessine que les Coordonées Logiques
Qt Semble se soucier du nombre de Pixel que fait la Ligne puisqu'en deZoomant, le Problème n'est Plus.
Donc il faudrait que j'effectue une Transformation pour les Objets Débordant de l'Ecran.
C'est Très CN, sous MFC il suffit de signalé que seul la partie consernant l'Ecran est à redessiner
PS: update(Rectangle) ne marche pas ici ! (voir 5em Post)
Quel est la solution pour que Qt dessine uniquement la Zone de l'ecran (update(Rectangle))
Et que dans cette zone, il ne dessine que la Partie Visible des Objets. (Ce qui n'a pas l'air d'être le cas ici)
Ou Alors il y a un Problème dans ma mise en Oeuvre de :
[b]1)
update(50,50,100,100)