qt 保存为svg图片
2017-01-19 01:12
441 查看
添加
#include <QtSvg/QSvgGenerator>
#include <QFileDialog>
QT += core gui svg
一些重要的头文件以及声明。
创建menu bar, 命名一个Save as SVG,添加一个slog,源码如下;
#include "basicshapewindow.h"
#include "ui_basicshapewindow.h"
#include <QtSvg/QSvgGenerator>
#include <QFileDialog>
BasicShapeWindow::BasicShapeWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::BasicShapeWindow)
{
ui->setupUi(this);
}
void BasicShapeWindow::paintEvent(QPaintEvent *event)
{
paintAll();
}
void BasicShapeWindow::paintAll(QSvgGenerator *generator)
{
QPainter painter;
if (generator)
painter.begin(generator);
else
painter.begin(this);
painter.setFont(QFont("Times", 14, QFont::Bold));
painter.drawText(QPoint(20, 30), "Testing");
painter.drawLine(QPoint(50, 60), QPoint(100, 100));
painter.setBrush(Qt::BDiagPattern);
painter.drawRect(QRect(40, 120, 80, 30));
QPen ellipsePen;
ellipsePen.setColor(Qt::red);
ellipsePen.setStyle(Qt::DashDotLine);
painter.setPen(ellipsePen);
painter.drawEllipse(QPoint(80, 200), 50, 20);
QPainterPath rectPath;
rectPath.addRect(QRect(150, 20, 100, 50));
painter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin));
painter.setBrush(Qt::yellow);
painter.drawPath(rectPath);
QPainterPath ellipsePath;
ellipsePath.addEllipse(QPoint(200, 120), 50, 20);
painter.setPen(QPen(QColor(79, 106, 25), 5, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
painter.setBrush(QColor(122, 163, 39));
painter.drawPath(ellipsePath);
QImage image;
image.load(":/head.png");
painter.drawImage(QPoint(150, 150), image);
painter.end();
}
BasicShapeWindow::~BasicShapeWindow()
{
delete ui;
}
void BasicShapeWindow::on_actionSave_as_triggered()
{
QString filePath = QFileDialog::getSaveFileName(this, "Save SVG", "", "SVG files (*.svg)");
if (filePath == "")
return ;
QSvgGenerator generator;
generator.setFileName(filePath);
generator.setSize(QSize(this->width(), this->height()));
generator.setViewBox(QRect(0, 0, this->width(), this->height()));
generator.setTitle("SVG Example");
generator.setDescription("This SVG file is generated by Qt.");
paintAll(&generator);
}
#include <QtSvg/QSvgGenerator>
#include <QFileDialog>
QT += core gui svg
一些重要的头文件以及声明。
创建menu bar, 命名一个Save as SVG,添加一个slog,源码如下;
#include "basicshapewindow.h"
#include "ui_basicshapewindow.h"
#include <QtSvg/QSvgGenerator>
#include <QFileDialog>
BasicShapeWindow::BasicShapeWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::BasicShapeWindow)
{
ui->setupUi(this);
}
void BasicShapeWindow::paintEvent(QPaintEvent *event)
{
paintAll();
}
void BasicShapeWindow::paintAll(QSvgGenerator *generator)
{
QPainter painter;
if (generator)
painter.begin(generator);
else
painter.begin(this);
painter.setFont(QFont("Times", 14, QFont::Bold));
painter.drawText(QPoint(20, 30), "Testing");
painter.drawLine(QPoint(50, 60), QPoint(100, 100));
painter.setBrush(Qt::BDiagPattern);
painter.drawRect(QRect(40, 120, 80, 30));
QPen ellipsePen;
ellipsePen.setColor(Qt::red);
ellipsePen.setStyle(Qt::DashDotLine);
painter.setPen(ellipsePen);
painter.drawEllipse(QPoint(80, 200), 50, 20);
QPainterPath rectPath;
rectPath.addRect(QRect(150, 20, 100, 50));
painter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin));
painter.setBrush(Qt::yellow);
painter.drawPath(rectPath);
QPainterPath ellipsePath;
ellipsePath.addEllipse(QPoint(200, 120), 50, 20);
painter.setPen(QPen(QColor(79, 106, 25), 5, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
painter.setBrush(QColor(122, 163, 39));
painter.drawPath(ellipsePath);
QImage image;
image.load(":/head.png");
painter.drawImage(QPoint(150, 150), image);
painter.end();
}
BasicShapeWindow::~BasicShapeWindow()
{
delete ui;
}
void BasicShapeWindow::on_actionSave_as_triggered()
{
QString filePath = QFileDialog::getSaveFileName(this, "Save SVG", "", "SVG files (*.svg)");
if (filePath == "")
return ;
QSvgGenerator generator;
generator.setFileName(filePath);
generator.setSize(QSize(this->width(), this->height()));
generator.setViewBox(QRect(0, 0, this->width(), this->height()));
generator.setTitle("SVG Example");
generator.setDescription("This SVG file is generated by Qt.");
paintAll(&generator);
}
相关文章推荐
- Qt绘制图形保存图片 (solaris下保存失败)
- Qt中如何保存 自画图片 为 图片文件
- QT中通过HTTP URL获取并保存网页上的图片
- 基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示
- Qt将图片保存为XML文件或者变为QSting
- qt截屏 保存为图片
- QT开启摄像头及截图保存图片
- Qt for android 截屏、Qml保存图片到本地
- vs下opencv的人脸检测以及qt下dll的封装调用(一、opencv下的人脸检测以及图片的保存)
- Android把svg图片转为jpg保存到相册图库
- Qt中如何保存自画图片为图片文件(转)
- Qt截取窗口到保存到图片
- Qt绘制图形保存图片 (solaris下保存失败) .
- Qt调用摄像头(截取并保存图片)
- QT在windows下实现截屏操作并保存为png图片
- Qt:显示、保存图片
- 用qt代码怎样编写图片保存格式[qt4.6]
- Qt中如何保存 自画图片 为 图片文件
- QT保存摄像头采集图片参考
- Qt打开,保存,另存为图片