QT学习记录(十一)画背景图,简单绘图,手动刷新窗口,QPixmap和QBitmap

目录

前言:

一,画背景图

1,新建工程

2,widget.h

3,widget.cpp

4,现象

二,简单绘图

1,画直线

(1)代码

(2)现象 

2,画矩形

(1)代码

(2)现象

3,画圆形

(1)代码

(2)现象

4,填充颜色

(1)代码

(2)现象

三,手动刷新窗口

(1)代码

(2)现象

四 ,QPixmap和QBitmap

1,代码

2,现象

五,QPixmap绘图设备


前言:

meme_airpods

一,画背景图

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();

2,现象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值