Qt---绘图

在头文件添加绘图事件

protected:
    void paintEvent(QPaintEvent *event);

在源文件进行实现

#include <QPainter>
#include <QGradient>

void CPaintPrac::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    QBrush brush;                   //define a brush
    brush.setColor(Qt::blue);       //set color for brush
    brush.setStyle(Qt::SolidPattern); //set style for brush

    QPen pen;                      //define a pen
    pen.setColor(Qt::black);       //set color for the pen
    pen.setStyle(Qt::DotLine);     //set style for the pen


    painter.setPen(pen);           //set pen for the painter
    painter.setBrush(brush);        //set brush for the painter

    //draw a rect from (20,20) to (300,400)
    painter.drawRect(QRectF(250,200,300,150));

    //draw two lines
    painter.drawLine(QPointF(200,150),QPointF(250,200));
    painter.drawLine(QPointF(550,200),QPointF(600,150));



    //draw an arc
    int startAngle = 30*16;
    int spanAngle = 120*16;
    QRectF rectangle(250,50,300,150);
    painter.drawArc(rectangle,startAngle,spanAngle);

    //线性渐变
    QLinearGradient linearGradient(QPointF(250,400),QPointF(550,400));
    linearGradient.setColorAt(0,Qt::green);
    linearGradient.setColorAt(0.3,Qt::blue);
    linearGradient.setColorAt(0.6,Qt::yellow);
    linearGradient.setColorAt(1,Qt::red);
    linearGradient.setSpread(QGradient::PadSpread);
    linearGradient.setStart(QPointF(250,400));
    linearGradient.setFinalStop(550,400);
    painter.setBrush(linearGradient);
    painter.drawRect(QRectF(250,400,300,150));


    //辐射渐变,a4\a5 is x/y of the focus point
    QRadialGradient radianalGradient(150,100,50,200,150);
    radianalGradient.setColorAt(0,Qt::red);
    radianalGradient.setColorAt(0.3,Qt::green);
    radianalGradient.setColorAt(0.7,Qt::blue);
    radianalGradient.setColorAt(1,Qt::yellow);
    radianalGradient.setSpread(QGradient::ReflectSpread);
    painter.setBrush(radianalGradient);
    painter.drawEllipse(QRectF(100,50,100,100));


    //锥形渐变
    QConicalGradient conicalGradient(QPointF(650,100),50);
    conicalGradient.setColorAt(0,Qt::gray);
    conicalGradient.setColorAt(0.4,Qt::red);
    conicalGradient.setColorAt(0.7,Qt::blue);
    conicalGradient.setColorAt(1,Qt::cyan);
    painter.setBrush(conicalGradient);
    painter.drawEllipse(QRectF(600,50,100,100));

}

绘制效果图

觉得博客对你有帮助的话:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值