I'm trying to test whether a given point开发者_StackOverflow社区 (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?
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
精彩评论