Also ich habe ein Zeichenfenster das von QWidget abgeleitet ist. Ich habe eine Liste von einer Klasse Linie (QList<Linie>). Die Klasse Linie hat ein Element QPainterpath. Im paintEvent gehe ich alle Linien durch und zeichne sie mit QPainter ins Zeichenfenster.
Wie mache ich nun wenn ich wissen will wo sich 2 Linien berühren (falls sie es tun). Ich hätte mir gedacht ich Speichere alle Punkte in ein Array, aber meine Linien haben eine gewisse Breite. (Deshalb kann ich mir nicht nur den Punkt speichern oda) Was ist hier der beste und einfachste Lösungsweg?
Kollisionen
-
CaptnChaos
- Beiträge: 605
- Registriert: 28. Juni 2007 15:01
- Kontaktdaten:
für dem QPainterPath kannst du die funktionen
direkt
benutzen.
Für die linien würde ich mir jeweils (wie in einem anderen thread bereits vorgeschlagen) temporär ein QRect erzeugen und dort ebenfalls die contains() funktion nutzen.
Code: Alles auswählen
bool contains ( const QPointF & point ) const
bool contains ( const QRectF & rectangle ) constbenutzen.
Für die linien würde ich mir jeweils (wie in einem anderen thread bereits vorgeschlagen) temporär ein QRect erzeugen und dort ebenfalls die contains() funktion nutzen.
-
reuabreliz
- Beiträge: 86
- Registriert: 4. Oktober 2008 17:06
-
reuabreliz
- Beiträge: 86
- Registriert: 4. Oktober 2008 17:06
Ja und wie bekomme ich die 2 Linien. Ich habe Mal in der Docu gekuckt von QPainterPath und da steht eine funktion elementAt(int) heißt das, dass QPainterpath wenn ich eine Linie damit zeichne sich diese linie immer als ein Element abspeichert und, dass ich somit mit elementAt() dann eine QLine z.B.: zurückbekomme?