Я создаю очень простой редактор изображений на Qt. Пользователь может открыть изображение (изображение отображается на QGraphicsView
) и у него есть возможность вращаться либо по часовой стрелке, либо против часовой стрелки. Затем он может сохранить повернутое изображение. Вот в чем моя проблема. QGraphicsView
а потом сохранить?
Вот мой код открытия файла изображения. Переменная изображение QPixmap
Тип и imageObject является QImage
указатель.
Один из способов сделать это — создать QPixmap
а затем использовать QPainter
рисовать QGraphicsScene
на растровое изображение.
# 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')
Взгляни на Этот метод:
void QGraphicsView::render(QPainter * painter, const QRectF & target = QRectF(), const QRect & source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
Отрисовывает исходный прямоугольник, который находится в координатах вида, со сцены
в цель, которая находится в координатах устройства рисования, используя маляр. это
функция полезна для захвата содержимого вида на краску
устройство, такое как QImage (например, чтобы сделать снимок экрана)
Что касается вращения, метод, который вам нужен, это void QGraphicsItem::setRotation(qreal angle)
или в качестве альтернативы void QGraphicsView::rotate(qreal angle)
— в зависимости от того, хотите ли вы повернуть элемент или весь вид.