سؤال

أحاول اختبار ما إذا كانت هناك نقطة معينة (x, y) يقع في أو بالقرب من الخطوط العريضة من أ QGraphicsPathItem.

استخدام QGraphicsItem.contains() أو .collidesWithItem() / Path() لن تفعل: أولئك الذين يعودون أيضا صحيحا إذا تم احتواء النقطة داخل المنطقة على الداخل من المسار، بينما أريد اختبار النقاط فقط على الخطوط العريضة. كيف يمكنني تحقيق ذلك؟

هل كانت مفيدة؟

المحلول

بعد نشر السؤال، وجدت الحل التالي:

    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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top