QPainter 绘制基本图形

QPainter 提供了很多接口函数用于绘制基本图形,包括点、直线、椭圆、矩形等,这些基本
图形可以构成复杂的图形。

本文使用QPainter 画各种图形,如椭圆、弧形、和玄、凸多边形、线、扇形,不规则多边形,橡皮擦第等

声明QPainter 画笔设置

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);//抗锯齿 高保真
    painter.setRenderHint(QPainter::TextAntialiasing);

    int W = this->width();
    int H = this->height();


    QPen pen;
    pen.setWidth(3);//线粗
    pen.setColor(Qt::red);//线条 颜色
    pen.setStyle((Qt::SolidLine));//实线
    pen.setCapStyle(Qt::FlatCap);//线的端点样式
    pen.setJoinStyle(Qt::BevelJoin);//两节点样式
    painter.setPen(pen);

画椭圆

    QRect   rect(W/4,H/4,W/2,H/2);
    painter.drawEllipse(rect);

画弧线

    QRect rect(W/4,H/4,W/2,H/2);
    int startAngle = 90*16;//起始90°
    int spanAngle = 90*16;//旋转90°
    painter.drawArc(rect,startAngle,spanAngle);

画和玄

    QRect   rect(W/4,H/4,W/2,H/2);
    int startAngle = 90 * 16; //起始90°
    int spanAngle = 90 * 16;   //旋转90°
    painter.drawChord(rect, startAngle, spanAngle);

画凸多边形

      QPoint points[9]={
         QPoint(5*W/12,H/4),
          QPoint(7*W/12,H/4),
         QPoint(3*W/4,5*H/12),
            QPoint(3*W/4,7*H/12),
    QPoint(7*W/12,3*H/4),
         QPoint(5*W/12,3*H/4),
    QPoint(W/4,7*H/12),
         QPoint(W/4,5*H/12),
    QPoint(5*W/12,H/4)
      };
      painter.drawConvexPolygon(points, 9);

画/加载图片

      QRect   rect(W/4,H/4,W/2,H/2);
      QImage  image(":/images/images/qt.jpg");
      painter.drawImage(rect, image);

画一条线

    QLine   Line(W/4,H/4,W/2,H/2);
    painter.drawLine(Line);

画多条线

    QRect   rect(W/4,H/4,W/2,H/2);
    QList<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);

按照绘制路径绘图

    QRect   rect(W/4,H/4,W/2,H/2);
    QPainterPath  path;
    path.addEllipse(rect);
    path.addRect(rect);
    painter.drawPath(path);

画扇形

    QRect   rect(W/4,H/4,W/2,H/2);
    int startAngle = 40 * 16;//起始40°
    int spanAngle = 120 * 16;//旋转120°
    painter.drawPie(rect, startAngle, spanAngle);

画多边形

 QPoint points[]={
        QPoint(5*W/12,H/4),
        QPoint(3*W/4,5*H/12),
        QPoint(5*W/12,3*H/4),
        QPoint(2*W/4,5*H/12),
    };
    painter.drawPolygon(points, 4);

画多边线

   QPoint points[]={
     QPoint(5*W/12,H/4),
     QPoint(3*W/4,5*H/12),
     QPoint(5*W/12,3*H/4),
     QPoint(2*W/4,5*H/12)
    };
    painter.drawPolyline(points, 4);

画圆弧角矩形

    QRect   rect(W/4,H/4,W/2,H/2);
    painter.drawRoundedRect(rect,20,20);

画一段文字

    QRect   rect(W/4,H/4,W/2,H/2);
    QFont   font;
    font.setPointSize(30);
    font.setBold(true);
    painter.setFont(font);
    painter.drawText (rect,"Hello,Qt");

画橡皮擦矩形

    QRect   rect(W/4,H/4,W/3,H/3);
    painter.eraseRect(rect);

显示不全部分为擦除的矩形

给矩形框画上颜色

    QRect   rect(W/4,H/4,W/2,H/2);
    painter.fillRect (rect,Qt::green);

按路径涂色

填充两个图形之间的空隙为红色

    QRect  rect(W/4,H/4,W/2,H/2);
    QPainterPath  path;
    path.addEllipse(rect);
    path.addRect(rect);
    painter.fillPath(path,Qt::red);

画一些点

 QPoint points[]={
       QPoint(5*W/12,H/4),
       QPoint(3*W/4,5*H/12),
       QPoint(2*W/4,5*H/12)
    };
    painter.drawPoints(points, 3);
}

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

castlooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值