我可能不会以最好的方式解释这个问题,所以请耐心等待。
我所拥有的是在MKMapView对象上绘制的CGPath:
我能够实现此目的的方法是为较深的蓝线创建一个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。这是另一个屏幕截图,显示了我想要的伪路径(手绘红色):
这怎么可能?
答案 0 :(得分:4)
简单:只需使用CGPathCreateCopyByStrokingPath
即可。传递宽线宽,上限为kCGLineCapRound
。
答案 1 :(得分:0)
你可以画两次。
宽度为n(n为轮廓宽度)和黑色的一个笔划。 然后使用橡皮擦模式在第一个笔划上绘制另一个笔划:
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);