QT QPainter用法(包含画点,画圆,画矩形,画线等)

       QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状。它也可以绘制排列的文本和像素映射。通常,它在一个“自然的”坐标系统中绘制,但是它也可以在视和世界转换中做到这些。

绘图工具的典型用法是:

  • 构造一个绘图工具。
  • 设置画笔、画刷等等。
  • 绘制。
  • 销毁这个绘图工具。

下面就QPainter的使用做下面的做以下例子以倍后用

1、main.cpp不做任何修改

2、widget.h修改如下

#ifndef WIDGET_H
#define WIDGET_H

#include
#include
#include
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
public:
     void paintEvent(QPaintEvent *);
    
private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
3、widget.cpp添加以下代码

#include "widget.h"
#include "ui_widget.h"

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

Widget::~Widget()
{
    delete ui;
}
void Widget::paintEvent(QPaintEvent *)
{
    QPen pen;
    //1、画字
    QPainter painter(this);
    //painter.setPen(Qt::blue);
    painter.setPen(Qt::blue);
    painter.setFont(QFont("Arial", 50));
    painter.drawText(rect(), Qt::AlignCenter, "Qt");
    //2、画多边形
    QRectF rectangle(100.0, 20.0, 80.0, 60.0);
    int startAngle = 30 * 16;
    int spanAngle = 120 * 16;

    painter.drawArc(rectangle, startAngle, spanAngle);

    static const QPointF points[4] = {
        QPointF(10.0, 80.0),
        QPointF(20.0, 10.0),
        QPointF(80.0, 30.0),
        QPointF(90.0, 70.0)
    };
    painter.drawConvexPolygon(points, 4);
    //3、画圆
    QRectF rectangle1(10.0, 100.0, 80.0, 80.0);
    //QPainter painter(this);
    painter.drawEllipse(rectangle1);
    //4、画线
    QLineF line(10.0, 80.0, 90.0, 20.0);
    //QPainter(this);
    painter.drawLine(line);
    //5、画
    static const QPointF points1[3] = {
        QPointF(110.0, 180.0),
        QPointF(120.0, 110.0),
        QPointF(180.0, 130.0),
    };
    painter.drawPolyline(points1, 3);
    //6、画矩形
    painter.setPen(Qt::red);
    QRectF rectangle2(200.0, 20.0, 80.0, 60.0);
    painter.drawRect(rectangle2);
    //7、画圆角矩形
    QRectF rectangle3(200.0, 120.0, 80.0, 60.0);
    painter.drawRoundedRect(rectangle3, 20.0, 15.0);
    //8、画多个点
    QPointF pointf[10];
    pen.setWidth(6);
    painter.setPen(pen); // 设置画笔
    for (int i=0; i<10; ++i)
    {
        pointf[i].setX(2.0+i*10.0);
        pointf[i].setY(130.0);
    }
    painter.drawPoints(pointf, 10);
    //9、画单个直线
    pen.setWidth(5);
    pen.setColor(Qt::red); // 设置画笔为黄色
    painter.setPen(pen); // 设置画笔
    painter.drawLine(rect().topLeft(), rect().bottomRight());
    //10、画点
    pen.setWidth(6);
    pen.setColor(Qt::green); // 设置画笔为黄色
    painter.setPen(pen); // 设置画笔
    painter.drawPoint(200,200);
    //11、画圆点
    painter.setPen(QColor(Qt::blue));
    painter.setBrush(QBrush(Qt::yellow));
    painter.drawEllipse(50,150,15,15);
}

3、运行结果如下所示

QT QPainter用法(包含画点,画圆,画矩形,画线等)_第1张图片

你可能感兴趣的:(QT,C++)