#include "mywidget.h"
#include "ui_mywidget.h"
#include<QPainter>
#include<QPen>
#include<QDebug>
#include<QBitmap>
#include<QPicture>
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MyWidget)
{
ui->setupUi(this);
x=0;
//绘图设备
// QPixmap:针对屏幕进行了优化,和平台相关,不能对图片修改
// QImage:和平台无关,可以对图片进行修改,在线程中绘图
// QPicture:保存绘图的状态(二进制文件)
//QPixmap
QPixmap pix(400,300);
QPainter p(&pix);
//填充背景色
p.fillRect(0,0,400,300,QBrush(Qt::white));
// pix.fill(Qt::white);
p.drawPixmap(0,0,200,200,QPixmap("../Image/hy.jpg"));
//保存图片
pix.save("../pixmap.jpg");
//QImage
QImage img(400,300,QImage::Format_ARGB32);
QPainter p(&img);
p.fillRect(0,0,400,300,Qt::white);
p.drawPixmap(0,0,200,200,QPixmap("../Image/hy.jpg"));
img.save("../image.jpg");
//QPicture二进制文件
QPicture pic;
QPainter p;
p.begin(&pic);
p.drawPixmap(0,0,400,300,QPixmap("../Image/hy.jpg"));
p.drawLine(50,50,150,50);
p.end();
pic.save("../picture.jpg");
}
void MyWidget::paintEvent(QPaintEvent* e)
{
QPainter p(this);
//p.drawPixmap(0,0,width(),height(),QPixmap("../Image/hy.jpg"));
//设置画笔
QPen pen;
pen.setColor(QColor(Qt::black));
pen.setWidth(5);
p.setPen(pen);
p.drawLine(QPoint(50,50),QPoint(150,50));
p.drawLine(50,50,50,150);
//设置画刷
QBrush bru;
bru.setColor(QColor(Qt::blue));
bru.setStyle(Qt::SolidPattern);
p.setBrush(bru);
p.drawEllipse(QPoint(150,150),100,100);
p.drawLine(100,100,300,300);
p.drawPixmap(x,400,100,100,QPixmap(":/Image/hy.jpg"));
//QBitmap黑白图片
p.drawPixmap(x+150,400,100,100,QBitmap(":/Image/hy.jpg"));
pen.setColor(QColor(Qt::red));
p.setPen(pen);
p.drawPixmap(x+300,400,100,100,QBitmap(":/Image/hy.jpg"));
//加载文件
QPicture pic;
pic.load("../picture.jpg");
QPainter p(this);
p.drawPicture(0,0,pic);
//QPixmap和QImage的转换
QPainter p(this);
QPixmap pix;
pix.load("../Image/hy.jpg");
//pixmap转qimage
QImage tem=pix.toImage();
p.drawImage(0,0,tem);
QImage img;
QPainter p(this);
img.load("../Image/hy.jpg");
QPixmap pp=QPixmap::fromImage(img);
p.drawPixmap(300,0,pp);
}
void MyWidget::on_pushButton_clicked()
{ x+=20;
if(x>width())
{
x=0;
}
//刷新窗口,让窗口重绘
update();//间接调用paintevent()
}
QPainter QPixmap QBitmap QImage QPicture
于 2022-12-28 15:39:57 首次发布