Как сохранить 3DSurface в Qt? - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь сохранить 3DSurfaces в виде файлов PDF.Графики поверхности определены следующим образом:

Q3DSurface *surface = new Q3DSurface;
surface->addSeries(mySeries);
QWidget *container = QWidget::createWindowContainer(surface);

, и я использую следующий код для записи виджета контейнера в файл PDF.

QPrinter printer(QPrinter::HighResolution);

printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");

QPainter painter(&printer);

double xscale = printer.pageRect().width() / double(container->width());
double yscale = printer.pageRect().height() / double(container->height());
double scale = qMin(xscale, yscale);
painter.translate(printer.paperRect().x() + printer.pageRect().width()/ 2,
                  printer.paperRect().y() + printer.pageRect().height()/2);
painter.scale(scale, scale);
painter.translate(-main->width()/ 2, -main->height()/ 2);
container->render(&painter);

Это сохраняет файл PDF с серымисправьте размер контейнера, но сама поверхность не копируется в файл.Вся помощь очень ценится.

1 Ответ

0 голосов
/ 27 июня 2018

Я нашел лучший ответ на мой вопрос.Q3DSurface наследует функцию renderToImage от класса QAbstract3DGraph, который можно использовать для рендеринга поверхности в файл изображения следующим образом:

Q3DSurface *surface = new Q3DSurface;
surface->addSeries(mySeries);

QImage image = surface->renderToImage();
image.save("output.png");
...