1、说明
所有的绘图操作是在绘图事件中进行。
mainwindow.h
cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
//重写虚函数
virtual void paintEvent(QPaintEvent *event);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.c
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPainter>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置窗口固定大小(X轴,Y轴)
this->resize(1800,1000);
}
void MainWindow::paintEvent(QPaintEvent *event)
{
}
2、绘制多个点
cpp
//定义画家 ,需要一个画板(QPaintDevice)对象来构造 QPainter(QPaintDevice *)
QPainter painter(this);
//反锯齿设置
painter.setRenderHint(QPainter::Antialiasing);
/*------------1、绘制一个点函数-----------*/
//定义画笔 15是画笔的粗细
QPen pen( QBrush( Qt::red) , 15);
//把画笔给画家
painter.setPen(pen);
//开始画点
painter.drawPoint(QPoint( 0,0));
//绘制两个点
painter.drawPoint(QPoint( 100,100));
/*------------2、绘制多个点函数,定义函数-----------*/
//画多个点 定义的一个数组
//定义画笔 15是画笔的粗细 设置为蓝色
pen.setColor(Qt::blue);
//把画笔给画家
painter.setPen(pen);
QPoint pts[]={ QPoint( 200,200),QPoint( 300,300) };
painter.drawPoints(pts,2);//绘制多个点函数
3、绘制多条直线
cpp
/*------------3、方式二:绘制一条直线方式一-----------*/
QPen pen1( QBrush( Qt::red) , 15);
pen1.setColor(Qt::green);
//修改画笔的粗细
pen1.setWidth(3);
//重新设置画笔 画笔交给画家 替换画家手中原来的画笔 **重要**
painter.setPen(pen1);
//画直线 两点确定一条直线
painter.drawLine(QPoint( 200,200),QPoint( 300,300) );
/*------------4、绘制多条直线,定义数组多用,重要-----------*/
pen1.setColor(Qt::blue);
painter.setPen(pen1); //替换画家手中原来的画笔 **重要**
QLine line(400,400, 500,500);
QLine line2(600,600, 700,700);
QLine lines[] ={ line, line2};
//画多条线 将多条画线交给画家 替换原来的画线
painter.drawLines(lines,2 );
4、绘制椭圆
cpp
/*------------5、绘制椭圆-----------*/
//绘制椭圆代码 矩形圆心坐标(200,100) 长轴50 短轴20
painter.drawEllipse(200,100,50,20);
5、绘制多边形
此处绘制的多边形会形成闭合。
cpp
/*------------6、绘制多边形-----------*/
QPolygon pts;
//3个点, (32,0) (44,0) (38,50)
pts.setPoints(3, 32 ,0 , 44, 0,38,50);
//设置画笔与画刷 画笔颜色 填充颜色
// painter.setPen(QPen(Qt::white,0.5));
// painter.setBrush( QColor("#FF4500") );
painter.drawPolygon(pts);
6、绘制多条直线
同时绘制多条直线。
cpp
/*------------6、绘制多条直线-----------*/
QLineF line3(43.0576+400,-468.5811+800, 357.5507+400,-557.6556+800);
QLineF line4(47.6494+410,-467.0754+800, 363.1472+410,-556.4345+800);
QLineF _lines[] ={ line3, line4};
//画多条线 将多条画线交给画家 替换原来的画线
painter.drawLines(_lines,2);