【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.5 多段线、多边形

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1ZP4y1S7Ax
在这里插入图片描述


本节讲解如何绘制多段线、多边形

1. 相关的 API

直接查看官方的帮助文档,可以看到有多个重载的方法用于绘制多段线、多边形

1.1 多段线

将多个点连接形成多段线

比如,数组中有 ABCD 四个点,会将A和B连接,B和C连接,C和D连接,形成一个多段线

// 带 F 表示参数为浮点数,否则为整型数
void drawPolyline(const QPointF *points, int pointCount)	// 参1:点的数组,参2:点的个数
void drawPolyline(const QPolygonF &points)					// 参数:多边形
    
void drawPolyline(const QPoint *points, int pointCount)
void drawPolyline(const QPolygon &points)

1.2 多边形

类似于绘制多段线的参数,但是会形成一个封闭的图形

比如,数组中有 ABCD 四个点,会将A和B连接,B和C连接,C和D连接,最后再将D和A连接,形成一个多边形

// 带 F 表示参数为浮点数,否则为整型数
void drawPolygon(const QPointF *points, 
                 int pointCount, 
                 Qt::FillRule fillRule = Qt::OddEvenFill);
void drawPolygon(const QPolygonF &points, 
                 Qt::FillRule fillRule = Qt::OddEvenFill);
    
void drawPolygon(const QPoint *points, 
                 int pointCount, 
                 Qt::FillRule fillRule = Qt::OddEvenFill);
void drawPolygon(const QPolygon &points, 
                 Qt::FillRule fillRule = Qt::OddEvenFill);

2. 具体实现

仍然使用上一节绘制点、线的那个数组

只需在 PaintWidget.cpppaintEvent 中添加如下代码即可:

void PaintWidget::paintEvent(QPaintEvent *event)
{
    ...

    for ( int x = 0; x < width(); x += 100 ) {
        for ( int y = 0; y < height(); y += 100 ) {
            
            ...
                
            switch ( mShape ) {

                // 多线段、多边形
                case _Polyline:
                    painter.drawPolyline(points, 4);
                    break;
                case _Polygon:
                    painter.drawPolygon(points, 4);
                    break;
            }
            ...  
        }
    }
}

最终绘制的多段线、多边形效果,如下:

image-20221208115102937

image-20221208115149145

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Linux Qt中,使用QPainter绘制线条并设置线条的粗细可以通过以下步骤实现: 1. 首先,创建一个QPainter对象,并指定在哪个界面中进行绘图。例如,可以使用以下代码创建一个QPainter对象: ``` QPainter painter(this); ``` 2. 接下来,创建一个QPen对象,并设置线条的宽度。可以使用以下代码设置线条的宽度: ``` QPen pen; pen.setWidth(2); // 设置线条的宽度为2个像素 ``` 3. 然后,将创建的QPen对象设置为QPainter对象的画笔。可以使用以下代码设置画笔: ``` painter.setPen(pen); ``` 4. 最后,使用QPainter对象的drawLine函数绘制线条。可以使用以下代码绘制一条直线: ``` painter.drawLine(QPoint(x1, y1), QPoint(x2, y2)); ``` 在上述代码中,x1和y1是线条的起始点坐标,x2和y2是线条的结束点坐标。 通过以上步骤,您可以在Linux Qt中使用QPainter绘制线条并设置线条的粗细。请根据您的需求调整代码中的参数和坐标值。\[1\] #### 引用[.reference_title] - *1* [Qt——QPainter画图](https://blog.csdn.net/qq_35451572/article/details/80989808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [QT学习笔记-第三天](https://blog.csdn.net/qq_56710307/article/details/126405886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.7 画笔设置](https://blog.csdn.net/bili_mingwang/article/details/128393755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大轮明王讲QT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值