QPainterPath表征折线

本文介绍了使用QPainterPath在Qt中正确绘制折线的方法。为了避免绘图引擎将连续的lineTo误认为是多边形描绘,文章提供了一种技巧:通过在每两个点后结束一次subPath来确保正确显示折线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘图中经常需要绘制多条线段形成的折线,然而要是想用QPainterPath的moveTo和lineTo来实现的话,很容易陷入一个陷阱,绘制出来的结果可能如下:
[img]http://dl2.iteye.com/upload/attachment/0093/0374/34779521-0025-3ad8-92b8-ee89614d4718.jpg[/img]

根本原因在于绘图引擎认为连续的lineTo是用来描绘多边形的,而不是用来描绘折线的,那么当path结束时,就会形成由拐点来描述的多边形。那么怎么用QPainterPath表示折线呢?秘诀就是每两个点就结束一次subPath,具体到代码上就很简单了,如下:
QList<QPointF> points;
points << ... <<... << ... << ... << ... < ...;//这里添加点集
QPainterPath polyline;
polyline.moveTo(points.at(0));
for(int i=1; i<points.size(); ++i)
{
polyline.lineTo(points.at(i));
polyline.moveTo(points.at(i));//关键的一句,用来结束subPath
}
...
//set pen
...
//set brush
...
painter->drawPath(polyline);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值