QPanter 绘画

 

Qpainter 绘图

1 绘图事件 void paintEvent(QPaintEvent *event)

2 声明一个画家对象 QPainter painter(this) this  指定绘图设备

3 画线 圆 矩形 文字等

4 设置画笔 QPen 设置画笔宽度,风格

5 设置画刷 QBrush 设置画刷 风格

 

QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
    //画线
    qPainter.drawLine(10,10,100,100);

    QPen pen(QColor(255,222,0));
    qPainter.setPen(pen);
    pen.setWidth(3);
    QBrush qBrush(Qt::cyan);
    qPainter.setBrush(qBrush);

    qPainter.drawEllipse(QPoint(100,100),50,30);
    qPainter.drawRect(QRect(200,200,100,100));

    qPainter.drawText(QRect(100,200,100,100),"到店下班了      11");

 

QPainter 高级设置

1 抗锯齿 效率低 画的更精细  painter2.setRenderHint(QPainter::HighQualityAntialiasing);

2 对画家进行移动。painter2.translate(300,20);

3 保存画家状态。painter2.save();

4 还原画家状态 painter2.restore();

 

    //高级
    QPainter painter2(this);
    painter2.drawEllipse(200,20,100,100);
    painter2.translate(300,20);
    painter2.setRenderHint(QPainter::HighQualityAntialiasing);
    painter2.save();
    painter2.drawEllipse(200,20,100,100);
    painter2.restore();
    painter2.drawEllipse(200,20,100,100);

 



 

手动调用一下painter 用update

1 利用画家画图片 drawPixmap(posx,300,QPixmap(":/8by.png"));

widget.h

public:
   int posx;
protected:
    void paintEvent(QPaintEvent *event);

widget.cpp

\#include "widget.h"
#include "ui_widget.h"
#include<QPaintEvent>
#include<QPainter>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

        posx = 20;

        connect(ui->pushButton,&QPushButton::clicked,[=](){
            update();
            posx+=20;
        });

}

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

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter qPainter(this);//实例化画家对象 this 执向的是绘画设备
    //画线
    qPainter.drawLine(10,10,100,100);

    QPen pen(QColor(255,222,0));
    qPainter.setPen(pen);
    pen.setWidth(3);
    QBrush qBrush(Qt::cyan);
    qPainter.setBrush(qBrush);

    qPainter.drawEllipse(QPoint(100,100),50,30);
    qPainter.drawRect(QRect(200,200,100,100));

    qPainter.drawText(QRect(100,200,100,100),"到店下班了      11");

    //高级
    QPainter painter2(this);
    painter2.drawEllipse(200,20,100,100);
    painter2.translate(300,20);
    painter2.setRenderHint(QPainter::HighQualityAntialiasing);
    painter2.save();
    painter2.drawEllipse(200,20,100,100);
    painter2.restore();
    painter2.drawEllipse(200,20,100,100);

    ///////画图////////
    QPainter painter3(this);
    if(posx > this->width()){
        posx= 20;
    }
    painter3.drawPixmap(posx,300,QPixmap(":/8by.png"));
}

 

posted @ 2022-07-31 11:18  摇摆的时钟  阅读(133)  评论(0)    收藏  举报