QPainterPath在指定区域绘图

本文介绍如何在Qt环境中利用QPainterPath结合控制点绘制立方体Bezier曲线,并展示最终的绘图效果。


void QPainterPath::cubicTo(const QPointF & c1, const QPointF & c2, const QPointF & endPoint)

在当前位置和给定终点,通过控制点c1和c2添加一个立方体Bezier曲线。在添加曲线后,当前位置变为曲线的终点。
这里写图片描述

QLinearGradient myGradient;
QPen myPen;

QPainterPath myPath;
myPath.cubicTo(c1, c2, endPoint);

QPainter painter(this);
painter.setBrush(myGradient);
painter.setPen(myPen);
painter.drawPath(myPath);


void QPainterPath::arcTo(const QRectF & rectangle, qreal startAngle, qreal sweepLength)

void Widget::paintEvent(QPaintEvent *e)
{
    QPainterPath path;
    path.moveTo(150,150);
    path.arcTo(50,50,200,200,30,-90);

    QPainterPath path1;
    path1.moveTo(150,150);
    path1.arcTo(50,50,200,200,-30,90);

    QPainterPath path3;
    path3=path.united(path1);

    QPainter painter(this);
    QPen pen(QColor(255,0,0),2);

    painter.setPen(pen);
    painter.drawRect(50,50,200,200);
    painter.setBrush(Qt::red);
    painter.drawPath(path3);
    painter.setBrush(Qt::yellow);
    painter.drawPath(path1);
}

结果显示

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值