QwtPlot和QwtPolarPlot导出保存为图片的两种方式(QwtPlotRenderer、QwtPolarRenderer)

文章介绍了使用QPixmap的grabWidget和QwtPlotRenderer/renderDocument方法从QwtPlot和QwtPolarPlot获取截图,并演示了如何将这些截图保存为PNG或JPG格式的图片。
摘要由CSDN通过智能技术生成

法一:QPixmap指定的是像素值,需要确切值,容易得到不完整截图
法二:renderDocument方法,则能够得到完整图

 QPixmap::grabWidget()函数来获取m_plot的截图
使用QwtPlotRendererrender()函数将m_plot绘制到pixmap上,通过传递painterm_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);
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值