法一:QPixmap指定的是像素值,需要确切值,容易得到不完整截图
法二:renderDocument方法,则能够得到完整图
QPixmap::grabWidget()
函数来获取m_plot
的截图
使用QwtPlotRenderer
的render()
函数将m_plot
绘制到pixmap
上,通过传递painter
和m_plot->geometry()
作为参数
// 保存为图片格式
void onSavePicture() {
// 打开当前目录
QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), "", tr("Images(*.png *.jpg)"));
if (!fileName.isEmpty()) {
if (Style == 0) {
QPixmap pix = QPixmap::grabWidget(m_plot);
QPixmap pixmap(400, 400);
// 创建一个QPainter对象,并将其绑定到QPixmap对象上
QPainter * painter = new QPainter(&pixmap);
QwtPlotRenderer rend;
rend.render(m_plot, painter, m_plot->geometry());
// 将QImage保存为图片
pixmap.save(fileName);
} else if (Style == 1) {
// 创建一个QPixmap对象,并设置其大小为QwtSurfacePlot的大小
QPixmap pix = QPixmap::grabWidget(m_surfacePlot);
QPixmap pixmap(400, 400);
QPainter * painter = new QPainter(&pixmap);
QwtPolarRenderer renderer;
renderer.render(m_polarPlot, painter, m_polarPlot->geometry());
// 将QImage保存为图片
pixmap.save(fileName);
}
}
}
QwtPolarRenderer
来渲染QwtPolarPlot
并将其保存为一个文档(Document)
renderer.renderDocument( ) 函数参数
m_polarPlot
:要渲染的QwtPolarPlot
对象。fileName
:保存文档的文件名QSizeF(300, 200)
:输出文档的大小,以像素为单位85
:输出文档的旋转角度,以度为单位
// 保存为图片格式
void onSavePicture()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), "", tr("Images(*.png *.jpg)"));
if (!fileName.isEmpty()) {
if (Style == 0) {
QwtPlotRenderer rend;
rend.renderDocument(m_plot, "plot.png", QSizeF(300, 200), 85);
} else if (Style == 1) {
QwtPolarRenderer renderer;
renderer.renderDocument(m_polarPlot, fileName, QSizeF(300, 200), 85);
}
}
}