欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转Qt 2D绘图:填充规则详解与实战案例(第3部分)

最编程 2024-02-13 21:01:12
...

程序示例一:

    QPainter painter(this);

    QPainterPath path;

    path.moveTo(50, 250);
    path.lineTo(50, 230);

    //从当前点到点(120, 60)之间绘制一条三次贝塞尔曲线
    path.cubicTo(QPointF(105, 40), QPointF(115, 80), QPointF(120, 60));

    path.lineTo(130, 130);

    //添加一个椭圆
    path.addEllipse(QPoint(130, 130), 30, 30);
    painter.setPen(Qt::darkYellow);

    //绘制路径
    painter.drawPath(path);

    //平移坐标系统后重新绘制路径
    path.translate(200, 0);
    painter.setPen(Qt::darkBlue);

    painter.drawPath(path);

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

程序示例二:

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

    QPainterPath path;

    path.addEllipse(10, 50, 100, 100);
    path.addRect(50, 100, 100, 100);
    painter.setBrush(Qt::cyan);
    painter.drawPath(path);

    painter.translate(180, 0);
    path.setFillRule(Qt::WindingFill);

    painter.drawPath(path);

}

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

先绘制了一个包含相交的椭圆和矩形的路径,因为没有显示指定填充规则,则默认使用Qt::OddEventFill规则。然后将路径进行平移,重新使用Qt::WindingFill规则绘制了该路径。