QT-绘图

绘图事件

//绘图事件
void Widget::paintEvent(QPaintEvent *event)
{
    
    
    //实例化画家对象  this指定的是绘图设备
    QPainter painter(this);

    //设置画笔
    QPen pen(Qt::cyan);

    //设置画笔宽度
    pen.setWidth(2);

    //设置画笔风格
    pen.setStyle(Qt::DashLine);

    //关联画笔
    painter.setPen(pen);


    //画线
    painter.drawLine(QPoint(0,0),QPoint(100,100));

    //画圆
    painter.drawEllipse(QPoint(100,100),50,50);

    //画矩形
    painter.drawRect(QRect(0,0,100,100));

    //画文字
    painter.drawText(QRect(10,200,100,20),"努力学习");

}

设置抗锯齿

//绘图事件
void Widget::paintEvent(QPaintEvent *event)
{
    
    
  QPainter painter(this);

  painter.drawEllipse(QPoint(100,50),50,50);

  //设置抗锯齿能力 效率较低
  painter.setRenderHint(QPainter::Antialiasing);
  painter.drawEllipse(QPoint(200,50),50,50);
  
}

移动初始位置 保存画家状态

//绘图事件
void Widget::paintEvent(QPaintEvent *event)
{
    
    
  QPainter painter(this);

  //画矩形
  painter.drawRect(QRect(20,20,50,50));
  
  //画家水平移动100
  painter.translate(100,0);

  painter.drawRect(QRect(20,20,50,50));
  
  //save painter state
  painter.save();
  
  //画家水平移动100
  painter.translate(100,0);
  
  //restore painter state
  painter.restore();

  painter.drawRect(QRect(20,20,50,50));
  
  
}

重绘事件

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

    //点击按钮,移动图片
    connect(ui->pushButton,&QPushButton::clicked,[=]()
    {
    
    
        //重绘事件会调用绘图事件
        Widget::update();
    });
}

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

//绘图事件
void Widget::paintEvent(QPaintEvent *event)
{
    
    
  posX+=10;
  QPainter painter(this);
  painter.drawPixmap(posX,0,QPixmap(":/Liny.png"));

  //创建QPixmap对象 缩放pixmap
   QPixmap pixmap;

   //加载图片
   pixmap.load(":/PlayLevelSceneBg.png");

   //绘制背景图
   painter.drawPixmap(0,0,this->width(),this->height(),pixmap);

   //加载标题
   pixmap.load(":/Title.png");

   //缩放图片
   pixmap=pixmap.scaled(pixmap.width()*0.5,pixmap.height()*0.5);

   //绘制标题
   painter.drawPixmap(10,30,pixmap.width(),pixmap.height(),pixmap);
}

绘图设备

QPixmap:专门为不同平台做了优化

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

    //pixmap绘图设备 指定绘图设备大小
    QPixmap pix(300,300);

    //填充颜色
    pix.fill(Qt::white);

    //申明画家,绘图设备指定QPixmap
    QPainter painter(&pix);
    painter.drawEllipse(QPoint(100,100),50,50);

    //输出到了文件中 而不是在窗口上
    pix.save("D:\\1.png");
}

猜你喜欢

转载自blog.csdn.net/qq_41490873/article/details/108795915