Сгенерируйте CGPath из контура ширины линии другого пути

Возможно, я не объясню это наилучшим образом, поэтому, пожалуйста, несите меня.

Что у меня есть нарисованный CGPath поверх объекта MKMapView:

То, как я смог достичь этого, – создать CGPath для более темной синей линии, затем создать копию этого пути, а затем погладить более толстую версию с полупрозрачным синим цветом. Вот код, который я сейчас использую для этого:

// set the shadow around the path line CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetRGBStrokeColor(context, 0.0f, 0.0f, 0.0f, 0.0f); CGContextSetRGBFillColor(context, 0.0f, 0.0f, 1.0f, 0.4f); CGPathRef shadowPath = CGPathCreateCopyByStrokingPath(self.path.CGPath, NULL, 80.0f, kCGLineCapRound, kCGLineJoinRound, 0.0f); CGContextBeginPath(context); CGContextAddPath(context, shadowPath); CGContextDrawPath(context, kCGPathFillStroke); CGContextRestoreGState(context); CGPathRelease(shadowPath); 

Работает хорошо, ничего плохого до сих пор.

Однако я хотел бы сделать, чтобы получить CGPathRef из контура этой более толстой полупрозрачной синей области. Вот еще один скриншот, показывающий псевдо-путь, который я хочу из этого (рисованный красным):

Как это возможно?

Просто: используйте CGPathCreateCopyByStrokingPath . Пропустите широкую ширину линии и крышку kCGLineCapRound .

Вы можете нарисовать два стока.

один ход с шириной n (n – ширина контура) и черный цвет. другой штрих затем рисуется поверх первого, с режимом ластика:

 CGContextSetBlendMode(context, kCGBlendModeCopy); CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]); 
Interesting Posts
Давайте будем гением компьютера.