16.Qt PainterDevice

绘图设备
    QPixmap pix(300,300)
    利用画家画图
    保存 save
    fill 填充颜色
    QImage img(300,300, …RGB32)
    画图
    保存 save
    对像素进行访问
        setPixel
    QBitmap
        色深 1 黑白色
    Qpicture
        绘图指令
        save 格式没有限定
        画图  进行加载 load
        painter.drawPicture(0,0,pic)
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

public:
//绘图
void paintEvent(QPaintEvent *);
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QPicture>

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

    /*
    //QPixmap做绘图设备
    QPixmap pix(300, 300);
    QPainter painter(&pix);

    painter.setPen(QPen(Qt::green));
    painter.drawEllipse(QPoint(150, 150), 100, 100);
    //保存
    pix.save("D:\\pix.png");
    */

    /*
    //QImage 做绘图设备  对像素级访问进行了优化
    QImage img(300,300,QImage::Format_RGB32);
    img.fill(Qt::white);
    QPainter painter(&img);
    painter.setPen(QPen(Qt::blue));
    painter.drawEllipse(QPoint(150,150),100,100);
    img.save("E:\\img.png");
    */

    //QPicture 绘图设备
    //在下面的Widget::paintEvent中可以利用保存的绘图指令pic.ld来恢复保存的指令图画
    QPicture pic; //用于重现 记录绘图指令
    QPainter painter;
    painter.begin(&pic);

    painter.setPen(QPen(Qt::cyan));
    painter.drawEllipse(QPoint(150,150),100,100);

    painter.end();
    //保存绘图指令
    pic.save("D:\\pic.ld");
}

void Widget::paintEvent(QPaintEvent *)
{
    /*
    //QImage可修改xiangsu
    QImage img;
    img.load(":/Image/Luffy.png");

    for(int i = 50 ; i < 100;i++)
    {
       for(int j = 50 ; j < 100 ;j ++)
       {
           QRgb value = qRgb(255,0,0);
           //设置像素点
            img.setPixel(i,j,value);
       }
    }

    QPainter painter(this);
    painter.drawImage(QPoint(0,0),img);
    */

    //重现绘图指令 QPicture
    QPicture pic;
    pic.load("D:\\pic.ld");
    QPainter painter(this);
    painter.drawPicture(0,0,pic);

}

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

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值