Qt第十六天

QPainter基本绘图

只有最基本的画图
widget.h

#ifndef WIDGET_H
#define WIDGET_H


#include <QWidget>
#include<QPainter>


namespace Ui {
class Widget;
}


class Widget : public QWidget
{
    Q_OBJECT
protected:
    void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;//Q_DECL_OVERRIDE表示重载


public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();


private:
    Ui::Widget *ui;
};


#endif // WIDGET_H


widget.cpp

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


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setPalette(QPalette(Qt::white));//设置背景为白色
    setAutoFillBackground(true);
}


Widget::~Widget()
{
    delete ui;
}
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);//反锯齿,文字反锯齿
    int W=this->width();
    int H=this->height();
/*    //设置区域
    QRect rect1(0,0,W/4,H/4);
    //设置画笔
    QPen pen;


    pen.setWidth(2);//设置线宽
    pen.setColor(Qt::black);//线色
    pen.setStyle(Qt::SolidLine);//实线线形
    pen.setCapStyle(Qt::FlatCap);//端点样式
    pen.setJoinStyle(Qt::MiterJoin);//连接样式


    painter.setPen(pen);
    //设置画刷1
    QBrush brush1;


    brush1.setColor(Qt::green);//颜色
    brush1.setStyle(Qt::HorPattern);//样式
    //QPixmap texturePixmap(":images/images/texture2.jpg");
    //brush.setStyle(Qt::TexturePattern);//材质填充
    //brush.setTexture(texturePixmap);


    painter.setBrush(brush1);
    //绘图
    painter.drawRect(rect1);
*/
    //渐变效果
    //辐射渐变
/*  QRadialGradient radiaGrad(W/2,H/2,qMax(W/16,H/16),W/2,H/2);//辐射填充中心(W/2,H/2),辐射填充半径qMax(W/8,H/8),焦点坐标(W/2,H/2)
    radiaGrad.setColorAt(0,Qt::black);//0是起点
    radiaGrad.setColorAt(1,Qt::white);//1是终点
    radiaGrad.setSpread(QGradient::ReflectSpread);
    painter.setBrush(radiaGrad);
    painter.drawRect(this->rect());//填充更大的区域
*/
    //线形渐变
/*  QLinearGradient linearGrad(rect().left(),rect().top()/2,rect().right(),rect().top()/2);//
    linearGrad.setColorAt(0,Qt::black);
    linearGrad.setColorAt(0.5,Qt::blue);
    linearGrad.setColorAt(1,Qt::white);
    painter.setBrush(linearGrad);
    painter.drawRect(this->rect());
*/
    //圆锥渐变
/*  QConicalGradient conicalGrad(W/2,H/2,0);
    conicalGrad.setColorAt(0,Qt::black);
    conicalGrad.setColorAt(0.2,Qt::blue);
    conicalGrad.setColorAt(1,Qt::white);
    painter.setBrush(conicalGrad);
    painter.drawRect(this->rect());
*/


    QRect rect(W/4,H/4,W/2,H/2);
    int startAngle=90*16;
    int spanAngle=90*16;
    painter.drawArc(rect,startAngle,spanAngle);
    painter.drawChord(rect,startAngle,spanAngle);
    QPoint points[4]={QPoint(5*W/12,H/4),QPoint(3*W/4,5*H/12),QPoint(5*W/12,3*H/4),QPoint(W/4,5*H/12)};
    painter.drawConvexPolygon(points,4);
    QImage image(":images/images/qt.jpg");
    //painter.drawImage(rect,image);
    QVector<QLine>Lines;
    Lines.append(QLine(rect.topLeft(),rect.bottomRight()));
    Lines.append(QLine(rect.topRight(),rect.bottomLeft()));
    Lines.append(QLine(rect.topLeft(),rect.bottomLeft()));
    Lines.append(QLine(rect.topRight(),rect.bottomRight()));
    //painter.drawLines(Lines);
    QPainterPath path;
    path.addEllipse(rect);
    path.addRect(rect);
    painter.fillPath(path,Qt::red);
}


运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/theRookie1/article/details/85001577