目录
前言:
一,画背景图
1,新建工程
2,widget.h
/重写绘图事件,虚函数
//如果窗口绘图,必须放在绘图事件里实现
//绘图时间内部自动调用,窗口需要重绘的时候(状态改变)
protected:
void paintEvent(QPaintEvent *);
3,widget.cpp
#include <QPainter>
void Widget::paintEvent(QPaintEvent *)
{
//QPainter p(this);
QPainter p;//创建画家对象
p.begin(this);//指定当前窗口为绘图设备
//绘图操作
//p.drawxxx();
//画背景图
//p.drawPixmap(0,0,width(),height(),QPixmap("../Image/senku"));
//width(),height()跟着窗口动
p.drawPixmap(rect(),QPixmap("../Image/senku"));
p.end();
}
4,现象
二,简单绘图
1,画直线
(1)代码
void Widget::paintEvent(QPaintEvent *)
{
//QPainter p(this);
QPainter p;//创建画家对象
p.begin(this);//指定当前窗口为绘图设备
//定义画笔
QPen pen;
pen.setWidth(5);//设置线宽
//pen.setColor(Qt::red);
pen.setColor(QColor(14,9,234));//rgb
pen.setStyle(Qt::DashLine);//设置风格
//把画笔交给画家
p.setPen(pen);
//画直线
//(起始点x,起始点y,)
p.drawLine(50,50,150,50);
p.drawLine(50,50,50,150);
p.end();
}
(2)现象
2,画矩形
(1)代码
//画矩形
p.drawRect(150,150,100,100);
(2)现象
3,画圆形
(1)代码
//画圆形
p.drawEllipse(QPoint(150,150),50,25);
(2)现象
4,填充颜色
(1)代码
#include <QBrush>
/
//创建画刷对象
QBrush brush;
brush.setColor(Qt::red);//设置颜色
brush.setStyle(Qt::Dense1Pattern);//设置样式
//把画刷交给画家
p.setBrush(brush);
(2)现象
三,手动刷新窗口
(1)代码
//widget.h
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
int x;
//widget.cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
x = 0;
}
//画meme
p.drawPixmap(x,200,80,80,QPixmap("../Image/meme_think"));
///
void Widget::on_pushButton_clicked()
{
x+=20;
if(x>width())
{
x=0;
}
//刷新窗口,让窗口重绘,整个窗口刷新
update();//间接调用paintEvent,重绘整个窗口
}
(2)现象
四 ,QPixmap和QBitmap
1,代码
#include <QPainter>
#include <QBitmap>
//
QPainter p;//创建画家对象
p.begin(this);//指定当前窗口为绘图设备
//QPixmap 图片背景透明
p.drawPixmap(0,0,QPixmap("../Image/meme_think3.png"));
//QBitmap 图片背景透明
p.drawPixmap(500,0,QBitmap("../Image/meme_think3.png"));
//QPixmap 图片背景白色
QPixmap pixmap;
pixmap.load(("../Image/meme_think2.png"));
p.drawPixmap(0,500,pixmap);
//QPixmap 图片背景白色
QPixmap bitmap;
bitmap.load("../Image/meme_think2.png");
p.drawPixmap(500,500,bitmap);
p.end();