qt画图QPicture学习(10)

这是一个可以记录和重现QPainter命令的绘图设备。 QPicture将QPainter的命令序列化到一个IO设备,保存为一个平台独立的文件格式。QPicture是平台无关的,因此它可以使用在多种设备之上,比如svg、pdf、ps、打印机或者屏幕。

qt画图QPicture学习(10)_第1张图片

//.h
#ifndef PICTUREWIDGET_H
#define PICTUREWIDGET_H

#include 
#include 

namespace Ui {
class pictureWidget;
}

class pictureWidget : public QWidget
{
    Q_OBJECT

public:
    explicit pictureWidget(QWidget *parent = 0);
    ~pictureWidget();
protected:
    void paintEvent(QPaintEvent *event);

private:
    Ui::pictureWidget *ui;
};

#endif // PICTUREWIDGET_H

//.cpp
#include "picturewidget.h"
#include "ui_picturewidget.h"
#include 
#include 
#include 
pictureWidget::pictureWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::pictureWidget)
{
    ui->setupUi(this);
}

pictureWidget::~pictureWidget()
{
    delete ui;
}


void pictureWidget::paintEvent(QPaintEvent *event) {
    QPicture pic;
    QPainter painter;

     //将图像绘制到QPicture中,并保存到文件
    painter.begin(&pic);
    painter.drawEllipse(200,100,100,50);
    painter.fillRect(20,20,100,100,Qt::red);
    painter.end();

    pic.save("D:\\drawing.pic");
    //将保存的绘图动作重新绘制到设备上
    pic.load("D:\\drawing.pic");
    painter.begin(this);
    painter.drawPicture(0,100,pic);
    painter.end();


}

你可能感兴趣的:(QT)