QPicture功能方法(5.12)


//for starf study

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include<QDebug>
#include<QPainter>
#include<QPicture>

//QPicture类是一种绘画设备,用于记录和重放QPaint命令。
/*
         QPicture picture;
         QPainter painter;
         painter.begin(&picture);           // paint in picture
         painter.drawEllipse(10,20, 80,70); // draw an ellipse
         painter.end();                     // painting done
         picture.save("drawing.pic");       // save picture

*/
//就是导出绘画的能力
//相比其他的QImage  QPixmap 会构造一个实际的图像对象
//QPicture更像是一个工具,用来对图像对象进行一些操作

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

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

void MainWindow::paintEvent(QPaintEvent *)
{
    QPicture Picture;
    QPicture Picture2;
    qDebug()<<Picture.boundingRect();//返回图片的边框,如果图片不包含数据,则返回无效的矩形。
    const char *data;
    data = Picture.data(); //返回指向图片数据的指针。指针仅在调用此图片上的下一个非常量函数之前有效。
                                        //如果图片不包含数据,则返回的指针为0。
    qDebug()<<Picture.isNull();//如果图片不包含数据,则返回true;否则返回false。
    qDebug()<<Picture.load(":/new/prefix1/D:/test.png");//从文件名指定的文件加载图片,如果成功,则返回true;
        //bool QPicture::load(QIODevice *dev, const char *format = nullptr)
    qDebug()<<Picture.save("D:/test.pic");//将图片保存到文件名指定的文件中,如果成功,则返回true;
    qDebug()<<Picture.size(); //返回图片数据的大小。
    //bool QPicture::save(QIODevice *dev, const char *format = nullptr)
    QPainter p(this);
    Picture.play(&p); //使用画师重放图片,如果成功则返回true;否则返回false。
                                //此函数的作用与qPaint::drawPicture()完全相同
    Picture.setBoundingRect(QRect(16,16,300,200));//将图片的边框设置为r。自动计算的值将被覆盖。
    Picture.setData(data, Picture.size());//直接根据数据和大小设置图片数据。此函数用于复制输入数据。
    Picture.swap(Picture2); //交换两个pic对象
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值