Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++/Qt - QRegion an QPainter uebergeben



Corcovado
16-02-2006, 12:37
Hallo,
Ich habe eine einfache Frage, vllt noch etwas allg. Info: ich bin gerade bei folgendem Tutorial http://doc.trolltech.com/3.0/tutorial1-12.html und versuche mich gerade an folgender Aufgabe:

If you did the "round shot" exercise from the previous chapter, try changing the shotRect() to a shotRegion() that returns a QRegion so you can have really accurate collision detection.
Ich habe in der Funktion shotRegion() den Returntype von QRect durch QRegion ersetzt - ein drawEllipse() hat mir bisher nicht geholfen, weil ich auch dem bisher keine Region geben konnte. Wie kann ich jetzt die Funktion QPainter::drawRect( const QRect & r), so ersetzen, dass ich statt des Parameters "const QRect & r" etwa "const QRegion & r" (type Ellipse) uebergeben kann?

Zusammenfassend:
Wie kann ich einem QPainter eine QRegion statt eines QRect zum "painten" uebergeben?

Corcovado
20-02-2006, 22:33
Hallo,
ich habe zwar keine perfekte loesung bisher gefunden, aber nutze momentan QRegion::boundingRect(), damit wird das "bounding rectangle" welches die Region umgibt uebergeben. Dies ist dann wieder ein QRect und damit funktioniert einiges, aber eben nicht alles.
Ein Problem, zB ist die collision detection, da QRect die Funktion "bool intersects( const QRect&) anbietet kann man bei QRect Objekten einfach abfragen ob sie nun irgendwo "angestossen" sind und ueberlappen. Das geht selbstverstaendlich auch mit dem bounding rect aber gibt es da keine Funktion die zurueckgibt ob etwa _nur_ die ausgefuellte QRegion mit dem QRect zusammengestossen ist, also "echte collision detection"?

anda_skoa
23-02-2006, 22:50
Du kannst die Schnittfläche von zwei QRegions ermitteln (siehe intersect) und dann prüfen, ob diese Fläche leer ist.

Ciao,
_