Dado un QGraphicsScene
, o QGraphicsView
, ¿es posible crear un archivo de imagen (preferiblemente PNG o JPG)? Si es así, ¿cómo?Cómo crear un archivo de imagen desde QGraphicsScene/QGraphicsView?
17
A
Respuesta
20
No he probado esto, pero esta es la idea de cómo hacerlo.
Puede hacerlo de varias maneras Una forma es como sigue:
QGraphicsView* view = new QGraphicsView(scene,this);
QString fileName = "file_name.png";
QPixmap pixMap = QPixmap::grabWidget(view);
pixMap.save(fileName);
//Uses Qpixmap::grabWidget function to create a pixmap and paints the QGraphicsView inside it.
La otra es utilizar la función de hacer que QGraphicsScene :: render():
QImage image(fn);
QPainter painter(&image);
painter.setRenderHint(QPainter::Antialiasing);
scene.render(&painter);
image.save("file_name.png")
25
Después sólo se ocupan con este problema, hay suficiente mejora aquí para justificar una nueva respuesta:
scene->clearSelection(); // Selections would also render to the file
scene->setSceneRect(scene->itemsBoundingRect()); // Re-shrink the scene to it's bounding contents
QImage image(scene->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);
scene->render(&painter);
image.save("file_name.png");
6
grabWidget está en desuso, use agarrar. Y puede usar un QFileDialog
QString fileName= QFileDialog::getSaveFileName(this, "Save image", QCoreApplication::applicationDirPath(), "BMP Files (*.bmp);;JPEG (*.JPEG);;PNG (*.png)");
if (!fileName.isNull())
{
QPixmap pixMap = this->ui->graphicsView->grab();
pixMap.save(fileName);
}
+1
He probado su solución y la solución * Petrucio *. Ambos funcionan, muchas gracias. Me gusta más tu solución :), es más corta. –
Cuestiones relacionadas
- 1. Crear un archivo desde dibujable
- 2. Crear una imagen desde un DIV
- 3. Crear un cursor semitransparente desde una imagen
- 4. Crear una imagen Buffered desde el archivo y hacerla TYPE_INT_ARGB
- 5. ¿Cómo crear una imagen desde UILabel?
- 6. Cómo crear un archivo .exe ejecutable desde el archivo .m
- 7. Cómo crear una imagen desde un UIView/UIScrollView
- 8. Cómo crear un nuevo ALAsset desde la imagen descargada
- 9. Crear un archivo jar desde un archivo de Scala
- 10. Salida de un archivo de imagen desde un servlet
- 11. crear un archivo .war desde gwt-project
- 12. ¿Cómo puedo crear una imagen PIL desde un archivo en memoria?
- 13. ¿Cómo crear un archivo jar ejecutable desde un proyecto clojure?
- 14. ¿Cómo crear un archivo .zip desde mi directorio de documentos?
- 15. Crear objeto fstream desde un archivo * puntero
- 16. Crear vector de imagen
- 17. Crear imagen del archivo .dot en C#
- 18. Crear imagen png desde QRCode para iPhone
- 19. Crear una imagen de gráfico (png, jpg ..) desde un archivo XML con Java
- 20. Crear una imagen sin almacenarla como un archivo local
- 21. ¿Cómo crear un archivo pdf desde la aplicación Qt?
- 22. ¿Cómo crear un archivo DBF desde cero en C#?
- 23. ¿Cómo puedo crear un archivo PFX desde una Keystore Java?
- 24. Cómo crear ByteArrayInputStream desde un archivo en Java?
- 25. ¿Cómo puedo crear una MSI desde un archivo CAB?
- 26. Cómo crear un archivo bmp desde byte [] en C#
- 27. ¿Cómo crear treeview desde un archivo XML usando WPF?
- 28. ¿Cómo crear una vista desde un archivo nib en xcode?
- 29. crear archivo PDF desde android
- 30. Crear archivo GPX desde GeoPoints
¡increíble! Gracias. intenté el segundo enfoque. lo único que se requiere es que 'QImage' necesite ser inicializado. – Donotalo