2017-11-27 13 views
0

Ich zeichne derzeit einen Winkelgradient mit einer ähnlichen Methode wie die gezeigte by Rob's answer here. Ich habe eine Erweiterung zu CGContext hinzugefügt, um einen Winkelgradienten zu zeichnen und möchte, dass es den Beschneidungspfad behandelt, so dass Anrufer es ähnlich wie eine Methode wie fillPath(using:) behandeln können.Wie kann ich feststellen, ob ein Punkt innerhalb des Pfads liegt, nachdem der Beschneidungspfad angewendet wurde?

Ich habe versucht, func pathContains(CGPoint, mode: CGPathDrawingMode) auf CGContext und func contains(CGPoint, using: CGPathFillRule, transform: CGAffineTransform) auf dem CGPath aus dem Kontext zurückgegeben.

Beide scheinen den Beschneidungspfad nicht zu verwenden, sodass meine Zeichnung außerhalb des Ausschnittbereichs liegt.

Gibt es eine Möglichkeit, entweder den Pfad bereits beschnitten zu bekommen oder eine Kopie des aktuellen Beschneidungspfades, damit ich auch überprüfen kann, ob das Pixel auch in diesem Pfad enthalten ist?

Antwort

0

Sie sollten überprüfen können, ob sich der Punkt innerhalb Ihres nicht geclippten Pfads befindet und ob der Punkt innerhalb des Beschneidungspfads liegt. Der beschnittene Pfad ist der Schnittpunkt des Beschneidungspfads und des Pfads. Daher befindet sich ein Punkt innerhalb des beschnittenen Pfads, nur innerhalb des nicht beschnittenen Pfads und innerhalb des Beschneidungspfads.

+0

Das verstehe ich, aber ich sehe keine Möglichkeit, den Beschneidungspfad aus dem CGContext abrufen. –

+0

Legen Sie den Beschneidungspfad nicht fest? wenn nicht die Grenzen der Ansicht. –

+0

Ich setze es aber auf einer anderen Ebene als wo ich es hier brauche. Es gibt gute Gründe dafür, wie zum Beispiel, dass mehrere Füllmethoden den gleichen Clipping-Code durchlaufen - so oft werde ich keinen Winkelgradienten zeichnen, aber vielleicht nur eine feste Füllung. Auch einige der Beschneidungspfade sind zusammengesetzt, so dass ich nie wirklich weiß, was der Beschneidungspfad ist, wenn ich es einstelle. (Ich setze einen Pfad und füge dann einen anderen hinzu und der Kontext kümmert sich darum, das Richtige zu tun, wenn mit der geraden/ungeraden Regel abgeschnitten wird.) –

Verwandte Themen