あなたが間違っているのは、パスを効果的に塗りつぶして形状を作成する方法を使用していることです。
void QPainter::strokePath(const QPainterPath & path, const QPen & pen)
代わりに、パス ストロークのみを描画するメソッドを使用する必要があります。
確かに、"draw path" は少しあいまいに聞こえます。QBrush
芸術的なブラシとして機能することを期待すると、さらに悪化します。これらの名前を思いついたのはアーティストではなく、プログラマーだったと思います。
編集: 取得したいのがストローク/アウトラインの「形状」またはジオメトリ、つまり によって描画されるものQPainter::strokePath()
である場合は、 でそれを生成し、結果のパスでQPainterPathStroker::createStroke(const QPainterPath & path)
使用するQPainter::drawPath()
と、 と同じ結果が得られますQPainter::strokePath()
。
編集 2: 私は最終的にあなたの意図 LOL を得ました。実際には、サブパスを使用することによって、単一のペインタ パス内に「個別/個別の曲線」を含めることができます。つまり、次のようになります。
QPainter p(this);
QPainterPath p1(QPointF(10,10)), p2(QPointF(50,10)), p3;
p1.quadTo(QPointF(100,50), QPointF(100,200));
p2.quadTo(QPointF(150,50), QPointF(150,200));
p3.addPath(p1);
p3.addPath(p2);
p.strokePath(p3, QPen(Qt::black));
単純moveTo()
に動作するようです:
QPainter p(this);
QPainterPath p1(QPointF(10,10));
p1.quadTo(QPointF(100,50), QPointF(100,200));
p1.moveTo(50, 10);
p1.quadTo(QPointF(150,50), QPointF(150,200));
p.strokePath(p1, QPen(Qt::black));
そしてtadaaa、1つのパスに複数の個別の曲線:

視覚的な出力が同じであるだけでなく、どちらのアプローチも同じ数のパス要素を持っているようです。しかし、コメントで述べたように、2 つの開いた曲線に対するこれらのソリューションは、実際には形状を生成しません。