Qt学习笔记——绘图

重写绘图事件

Qt学习笔记——绘图_第1张图片

Qt学习笔记——绘图_第2张图片


案例

代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QPainter"
#include "QTimer"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //实现点击按钮向右移动图片
//    connect(ui->pushButton,&QPushButton::clicked,[=](){
//        posX+=20;
//        //如果手动调用绘图事件 用update更新
//        update();
//    });

    //使用定时器向右移动图片
    QTimer *timer = new QTimer(this);
    timer->start(100);
    connect(timer,&QTimer::timeout,[=](){
        posX+=20;
        //如果手动调用绘图事件 用update更新
        update();
    });
}

void MainWindow::paintEvent(QPaintEvent *pe)
{

    /************************绘图基本设置**************************************/
    QPainter painter(this);

    //设置画笔颜色
    QPen pen(QColor(255,0,0));
    //设置画笔宽度
    pen.setWidth(5);
    //设置画笔的风格
    pen.setStyle(Qt::DotLine);
    //让画家使用笔
    painter.setPen(pen);

    //设置画刷
    QBrush brush(Qt::cyan);
    //设置画刷的风格
    brush.setStyle(Qt::Dense5Pattern);
    //让画家使用画刷
    painter.setBrush(brush);

    //画线
    painter.drawLine(QPoint(0,0),QPoint(100,100));
    //画圆 椭圆
    painter.drawEllipse(QPoint(100,100),50,50);
    //画矩形
    painter.drawRect(QRect(QPoint(20,20),QSize(50,50)));

    //画笔的画字的时候需要用font来指定大小,指定画笔的宽度没有用
    QFont font = painter.font();
    font.setPixelSize(36);
    painter.setFont(font);
    //画文字
    painter.drawText(QRect(10,200,400,100),"好好学习\n天天向上");

    /************************绘图高级设置**************************************/
    QPainter pinter2(this);
    pinter2.drawEllipse(QPoint(100,400),50,50);
    //设置抗锯齿能力  效率低
    pinter2.setRenderHint(QPainter::Antialiasing);
    pinter2.drawEllipse(QPoint(200,400),50,50);

    pinter2.drawRect(200,500,50,50);

    //参考坐标发生改变  从0,0到100,0
    pinter2.translate(100,0);
    //保存画家的状态
    pinter2.save();

    pinter2.drawRect(200,500,50,50);

    pinter2.translate(100,0);
    //还原保存画家的状态
    pinter2.restore();

    //这个矩形会被重叠,参考点的位置没有发生改变
    pinter2.drawRect(200,500,50,50);


    /************************利用画家绘制资源图片**************************************/
     QPainter pinter3(this);
     //posX在头文件中,作为全局变量
     //如果超出屏幕宽度  从初始值(400)开始
     if(posX > this->width())
     {
         posX = 400;
     }
     pinter3.drawPixmap(posX,200,QPixmap(":img/icon/b1.png"));

}

MainWindow::~MainWindow()
{
    delete ui;
}

演示

Qt学习笔记——绘图_第3张图片

 

 

你可能感兴趣的:(Qt学习,qt,开发语言)