2011-10-11 28 views
5

QGraphicsPolygonItemを使用していますが、常にエンドポイントを開始点に接続することに気付きました。QGraphicsPolygonItem開いた(閉じていない)ポリゴンを描画します

多角形の用語が正確に意味することを知っています。私が探しているのは「ポリライン」または「多角形のチェーン」です。私はQGraphicsItemのサブクラスでそれほど見つからなかった。

QGraphics Frameworkでポリゴンチェーンを描くにはどうすればよいですか? QGraphicsPolygonItemのプロパティまたはそのクラスはありますか?

答えて

3

QPainterPathを使用し、lineToメソッドを使用してポリラインポイントを入力し、QGraphicsPathItemを使用してグラフィックアイテムにすることができます。

また、複数のQGraphicsLineItemを1つのQGraphicsItemGroupに結合することも考えられますが、行を整列させることに注意する必要があるため、これは難しくなります。

これはあなたが探しているものですか?

EDIT:

QPainterPathは明らかに、あなただけの行のグループが残され、パスを閉じています。

EDIT2:あなたを混乱させるため

申し訳ありませんが、HostileForkは右のように見える - あなただけQPainterPathを使用して充填されていない、あなたの道を保つためにpathItem->setBrush(QBrush(Qt::transparent));を呼び出します。

+0

QPainterPathはパスを自動的に閉じないため、おそらく、LineToとmoveToのシーケンスを使用するのが最適な方法です。あなたは記入のために混乱するかもしれませんか?塗りつぶしをしたくない場合は、 'pathItem-> setBrush(QBrush(Qt :: transparent));' – HostileFork

2

私は同様の問題があり、QGraphicsPathItemクラスを使用して解決しました。以下のコードでは、ポリゴン(すなわち開始点をQPolygonFは、そのエンドポイントとは異なる)は、非閉鎖QPolygonFオブジェクトである:

QPainterPath path = new QPainterPath(); 
path.addPolygon(polygon); 
QGraphicsPathItem contour = new QGraphicsPathItem(path); 
contour.setPen(new QPen(QColor.black)); 

このQGraphicsPathItemオブジェクトを表示、開始点であります(理論上は)エンドポイントから切り離されています。

このサンプルコードはJavaで書かれています。メカニズムはC++と同じでなければなりません。

関連する問題