Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test proximity to the outline of a QGraphicsPathItem?

I'm trying to test whether a given point (x, y) is located on or close to the outline of a QGraphicsPathItem.

Using QGraphicsItem.contains() or .collidesWithItem() / Path() will not do: those also return True if the point is contained within the area on the interior of the path, while I want to test only for points on the outline. How can I accomplish that?

like image 482
dF. Avatar asked Feb 06 '10 22:02

dF.


1 Answers

After posting the question I found the following solution:

    path = QPainterPath(...)   # Path we are testing against
    point = QPointF(...)       # Current position

    stroker = QPainterPathStroker()
    stroker.setWidth(10)        # Distance which we consider "on" the path 
    stroke = stroker.createStroke(path)

    if stroke.contains(point):
        # point is on path
like image 63
dF. Avatar answered Oct 01 '22 19:10

dF.