2016-02-04 12 views
1

Je crée un éditeur d'image très simple sur Qt. L'utilisateur peut ouvrir une image (l'image est affichée sur un QGraphicsView) et il a la possibilité de tourner dans le sens horaire ou antihoraire. Puis il peut enregistrer l'image pivotée.Ici se trouve mon problème.Comment puis-je obtenir l'image pivotée affichée dans le QGraphicsView, puis enregistrez-le?Comment sauvegarder des images à partir de QGraphicsView?

Voici mon code d'ouverture du fichier image. L'image variable est de type QPixmap et l'imageObject est un pointeur QImage.

Opening Image Code

+1

Au lieu d'utiliser une image de votre code, pourquoi ne pas simplement poster le code dans votre question. –

Répondre

0

Il suffit de regarder this method:

void QGraphicsView::render(QPainter * painter, const QRectF & target = QRectF(), const QRect & source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio) 

rend le rect de la source, qui se trouve dans les coordonnées d'affichage, de la scène dans la cible, qui se trouve dans les coordonnées du dispositif de peinture, en utilisant peintre. Cette fonction est utile pour capturer le contenu de la vue sur un dispositif de peinture , comme un QImage (par exemple, de prendre une capture d'écran)

En ce qui concerne la rotation, la méthode que vous avez besoin est void QGraphicsItem::setRotation(qreal angle) ou bien void QGraphicsView::rotate(qreal angle) - selon que vous souhaitez faire pivoter l'élément ou la vue entière.

1

Une façon de le faire est de créer un QPixmap puis d'utiliser un QPainter pour peindre le QGraphicsScene sur le pixmap.

# Get the size of your graphicsview 
rect = graphicsview.viewport().rect() 

# Create a pixmap the same size as your graphicsview 
# You can make this larger or smaller if you want. 
pixmap = QPixmap(rect.size()) 
painter = QPainter(pixmap) 

# Render the graphicsview onto the pixmap and save it out. 
graphicsview.render(painter, pixmap.rect(), rect) 
pixmap.save('/path/to/file.png') 
+0

Merci beaucoup, vous avez été très utile, enfin cela a fonctionné! @BrendanAbel –