У меня есть пользовательский интерфейс с:
Кнопка N.1 (используется для загрузки изображений)
N.2 QGraphicsView (слева и справа)
N.1 Нажмите кнопку, которая принимает экран печати текущего изображения, загруженного в QGraphicsView слева
С помощью мыши можно:
1) увеличение / уменьшение масштаба изображения
2) нарисуйте прямоугольники на изображении.
Я хочу взять экран печати изображения в соответствии с областью увеличения или уменьшения, которую я использую. Однако, как только файл сохранен, он показывает все изображение (неправильно, потому что я хотел только увеличенную или уменьшенную часть) с нарисованными прямоугольниками (это правильно).
Согласно этот пост QFileDialog использовался аналогичным образом, который я пытаюсь сделать. Я успешно использовал QFileDialog::getSaveFileName()
для сохранения изображения. Однако это не полностью решает проблему.
Ниже кнопки, которая заботится о снятии экрана печати изображения в QGraphicsView слева:
void MainWindow::on_addNewRecordBtn_clicked()
{
leftScene->clearSelection(); // Selections would also render to the file
leftScene->setSceneRect(leftScene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents
QImage image(leftScene->sceneRect().size().toSize(), QImage::Format_ARGB32); // Create the image with the exact size of the shrunk scene
image.fill(Qt::transparent); // Start all pixels transparent
QPainter painter(&image);
leftScene->render(&painter);
image.save(QFileDialog::getSaveFileName(this, tr("New Image Name"), QDir::rootPath(),
"Name (*.jpg *.jpeg *.png *.tiff *.tif)"));
}
Ожидаемым результатом будет сохранение увеличенного изображения (например, zoom.jpg) следующим образом:
Однако, когда я сохраняю изображение (zoom.jpg), в результате я получаю постоянно все изображение с нарисованными элементами: