Je me suis retrouvé dans une erreur de configuration d'une transformation QPainter. J'ai lu la documentation de Qt, mais brainfog est dans le chemin.Transformation des coordonnées de l'écran logique QWidget/QPainter
void MyWidget::paintEvent (QPaintEvent *) {
QPainter painter (this);
// ...
Je veux rendre une scène qui est décrite en coordonnées logiques. La scène comprend une "scène" qui est le rectangle à rendre. La scène est spécifiée en coordonnées logiques. Le widget devrait avoir une fenêtre (est que la terminologie correcte?) Qui
- est aussi grand que possible sans dépasser les limites de la scène, et
- dispose d'un centre commun avec la scène.
Dans la situation au-dessus du stade serait décrit par quelque chose comme
QRectF stage_rect (QPointF(0.2,5.1), QPointF(6.5,1.9));
si je mis en place la transformation et appelez
painter.drawText (1.2, 2.2, "abc");
il devrait apparaître dans la en bas à gauche du widget comme indiqué ci-dessus - c'est-à-dire, les coordonnées logiques augmentent vers le haut, le plein la hauteur de la scène est montrée dans le widget, et la scène est rognée horizontalement pour conserver le rapport d'aspect (bien qu'il soit possible que le widget soit trop large/court, dans ce cas la scène serait recadrée verticalement).
Quelle transformation dois-je appliquer au QPainter pour ajuster la fenêtre fermement dans la scène?
Pour ajouter au dernier point: vous pouvez utiliser un objet 'QTransform' avec la transformation décrite, puis utiliser ses méthodes' map() 'pour gérer les valeurs de' QPointF', etc –
Oui, merci d'avoir signalé cela . Excellent point. – goug