我只想绘制 QPainter 曲线路径的一部分。我的路径是这样的:
QPointF p[4];
p[0] = QPoint(100, 200);
p[1] = QPoint(200, 60);
p[2] = QPoint(500, 180);
p[3] = QPoint(600, 100);
cPath.cubicTo(p[1], -a*p[0] + p[1] + a*p[2], a*p[1] + p[2] -a*p[3], p[2]);
现在绘制的路径如图所示Fig 1.
但现在我只想绘制两点之间的曲线,比如说 p(1) 和 p(2)。
如何只绘制贝塞尔曲线的一部分?
这是我解决这个问题的方法。
I used QPainterPath::toSubpathPolygons
返回多边形列表并得到QPolygonF
.
const QMatrix m = QMatrix();
QPolygonF cPoly = cPath.cubicTo(p[1], -a*p[0] + p[1] + a*p[2], a*p[1] + p[2] -a*p[3], p[2]).toSubpathPolygons(m).first();
然后我迭代了这个QPolygonF
并检查该多边形中的点是否位于我想要的两点之间。然后将这些点添加到新的多边形中。
QPolygonF nPoly;
QPolygonF::iterator i;
for (i = cPoly.begin(); i != cPoly.end(); ++i){
QPointF pnt = *i;
if (pnt.rx() >= p[1].rx() && pnt.rx() <= p[2].rx())
nPoly << pnt;
}
现在这个多边形可以用路径来绘制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)