三种绘图设备及区别:
- QPixmap:针对屏幕进行了优化,和平台相关,不能对图片进行修改;
- QImage:和平台无关,可以对图片进行修改,支持线程中绘图;
- QPicture:保存绘图的状态(二进制文件)
代码:
main.cpp:
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widgit.cpp:
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QPoint>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//QImage::QImage(int width, int height, QImage::Format format)
//QImage Inherits:QPaintDevice
//The image is stored using a 32-bit RGB format (0xffRRGGBB).
//初始化设备;
QImage image(400,300,QImage::Format_RGB32);
//初始化画家:
QPainter p;
//开始画
p.begin(&image);
p.drawImage(0,0,QImage("../images/Luffy.png"));
//对绘图设备前50个像素点进行操作
for(int i = 0; i< 50; i++)
{
for(int j = 0; j< 50; j++)
{
//image.setPixel(QPoint(i,j),qRgb(0,255,0));
//image可以对像素点进行操作;
image.setPixel(i,j,qRgb(0,0,255));
}
}
p.end();
//在上一层目录保存图片;
image.save("../image.png");
}
Widget::~Widget()
{
delete ui;
}