2017-11-27 4 views
0

저는 현재 by Rob's answer here으로 표시된 것과 비슷한 방법으로 각도 그라디언트를 그립니다. 각도 그라디언트를 그리기 위해 CGContext 확장을 추가했으며 호출자가 fillPath(using:)과 비슷한 메서드를 처리 할 수 ​​있도록 클리핑 패스를 처리하려고합니다. 나는 CGPath에 func pathContains(CGPoint, mode: CGPathDrawingMode) CGContext에와 func contains(CGPoint, using: CGPathFillRule, transform: CGAffineTransform) 사용하여 시도했다클리핑 패스가 적용된 후에 포인트가 패스 안에 있는지 어떻게 확인할 수 있습니까?

문맥에서 돌아왔다.

두 가지 모두 클리핑 경로를 사용하지 않는 것처럼 보이므로 내 그림이 클리핑 영역 외부로 이동합니다.

이미 클리핑 된 경로 또는 현재 클리핑 경로의 복사본을 얻을 수있는 방법이 있습니까? 그렇다면 픽셀이 해당 경로에도 포함되어 있는지 확인할 수 있습니까?

답변

0

당신은 포인트가 잘라지지 않은 경로 내부에 있는지 확인 할 수와 지점이 클리핑 패스 내부에 있는지 확인해야한다. 클리핑 된 패스는 클리핑 패스와 패스의 교차점이므로 클리핑 된 패스 내부와 클립핑 된 내부 둘 다 내부에 포인트가 있습니다.

+0

나는 이해하지만 CGContext에서 클리핑 패스를 검색하는 방법을 볼 수 없다. –

+0

클리핑 패스를 설정하지 않습니까? 그렇지 않은 경우는 뷰의 경계가됩니다. –

+0

나는 그것을 여기에서 필요로하는 것과 다른 수준으로 설정하고있다. 이 여러 채우기 방법이 동일한 클리핑 코드를 통해 갈 필요 포함하는 것이 좋은 이유입니다 - 너무 자주 나는 각도의 그라데이션을 묘화되지 않습니다,하지만 어쩌면 그냥 솔리드 채우기. 또한, 클리핑 패스의 일부 화합물, 그래서 사실은 내가 그것을 설정하면 클리핑 패스가 무엇인지 알 수 없다. (나는 다른를 추가 한 경로에 다음 설정하고 상황은 짝수/홀수 규칙을 사용하여 클리핑 때 올바른 일을 처리한다.) –

관련 문제