绘图设备
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();
}