CGPath大纲

我正在绘制一个CGPath,因为它的笔画是中风的。

基本上我想要一个使用CGPath绘制一条线。 然后我想回到最后一个CGPath的两边画线,使其成为轮廓线。

这条线可以弯曲和转弯,但我总是需要外面的两条线来跟随。

路径

编辑:我需要能够使中间的行透明,但轮廓坚实的黑色。

使用CGPathCreateCopyByStrokingPath通过以某种宽度抚摸旧path来创build新path。 然后使用kCGPathFillStroke绘制新的path。

 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 50, 50); CGPathAddLineToPoint(path, NULL, 200, 200); CGPathRef thickPath = CGPathCreateCopyByStrokingPath(path, NULL, 10, kCGLineCapButt, kCGLineJoinBevel, 0); CGContextAddPath(context, thickPath); CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); CGContextSetLineWidth(context, 3); CGContextDrawPath(context, kCGPathFillStroke); CGPathRelease(thickPath); CGPathRelease(path); } 

最简单的解决办法就是两次冲击path。 首先用较大的笔划宽度的黑色,然后再用相同的path使用笔划宽度略小的蓝色笔划。

编辑:
如果我没有记错的话,可以使用CGPathCreateCopyByStrokingPath(...)来创build一个新的path,然后你可以进行描边和填充。 那么你可以使用半透明的颜色。

从文档:

CGPathCreateCopyByStrokingPath

创build另一个path的描边副本。

 CGPathRef CGPathCreateCopyByStrokingPath( CGPathRef path, const CGAffineTransform *transform, CGFloat lineWidth, CGLineCap lineCap, CGLineJoin lineJoin, CGFloat miterLimit ); 

参数
path
复制的path。

转变
指向仿射转换matrix的指针,如果不需要转换,则为NULL。 如果指定,则Quartz在将转换path添加到新path之前将转换应用到转换path的元素。

行宽
在用户空间单位中使用的线宽。 该值必须大于0。

的linecap
线头样式constant-kCGLineCapButt(默认),kCGLineCapRound或kCGLineCapSquare。 请参阅“CGLineCap”。

lineJoin
行连接值-kCGLineJoinMiter(默认值),kCGLineJoinRound或kCGLineJoinBevel。 见“CGLineJoin”。

miterLimit分别
使用的斜接限制。