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")); }
浙公网安备 33010602011771号