2011-10-11 19 views
5

Bir QGraphicsPolygonItem kullanıyorum ve her zaman başlangıç ​​noktasıyla başlangıç ​​noktasını birbirine bağladığını fark ettim.QGraphicsPolygonAçık (kapalı değil) çokgen çizimi

Çokgen terimlerinin tam olarak bu anlama geldiğini ve aradığım şeyin "polyline" veya "çokgen zincir" olduğunu biliyorum. QGraphicsItem alt sınıflarında böyle bir şey bulamadım.

QGraphics Framework'te çok köşeli bir zinciri nasıl çizerim? QGraphicsPolygonItem ya da bunu yapan bir sınıf var mı?

cevap

3

QPainterPath'i kullanabilir ve yors polyline noktalarını girmek için lineTo yöntemini kullanabilirsiniz, ardından grafik öğesi yapmak için QGraphicsPathItem öğesini kullanın. Alternatif olarak, birkaç QGraphicsLineItem'i bir QGraphicsItemGroup'a dahil etmeyi düşünebilirsiniz. Ancak, satırları bir araya getirmeye dikkat etmeniz gerektiğinden daha da zorlaşırsınız. Üste |

Bu sizin için mi arıyorsunuz?

DÜZENLEME:

QPainterPath görünüşte o zaman sadece çizgilerin grubuyla bırakılır, yolları kapatıyor.

EDIT2:

aklını karıştırıyor için üzgünüm ama HostileFork doğru görünmektedir - Sadece QPainterPath kullanmak ve doldurulmamış senin yolunu tutmaya pathItem->setBrush(QBrush(Qt::transparent)); arayın.

+0

QPainterPath otomatik olarak yolları kapatmaz, bu nedenle bir dizi lineTo ve moveTo muhtemelen en iyi yaklaşımdır. Bir dolgu yüzünden kafan karışabilir mi? Bir dolgu istemiyorsanız, 'pathItem-> setBrush (QBrush (Qt :: transparent)); – HostileFork

2

Benzer bir sorunla karşılaştım ve QGraphicsPathItem sınıfını kullanarak çözdüm. Aşağıdaki kodda, çokgen (yani başlangıç ​​noktası, bir QPolygonF uç noktası farklıdır) olmayan bir kapalı QPolygonF nesnesidir:

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

bu QGraphicsPathItem nesnesi gösteren başlangıç ​​noktasıdır (teoride) son noktasından ayrıldı.

Üzgünüm, bu örnek kod Java'da; Ancak mekanizmalar C++ ile aynı olmalıdır.