Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CGPath with outline

I am trying to draw a CGPath that has a stroke for it's stroke.

Basically I want a draw a line using CGPath. I then want to go back and draw lines on both sides of the last CGPath giving it the effect that it is outlines.

This line can bend and turn in any way but I always need the two lines on the outside to follow.

Path

EDIT: I need to be able to make the middle of the line transparent but the outlines solid black.

like image 292
endy Avatar asked Jan 16 '13 21:01

endy


1 Answers

Use CGPathCreateCopyByStrokingPath to create a new path by stroking your old path at some width. Then draw your new path using kCGPathFillStroke.

- (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);
}
like image 200
Rob Napier Avatar answered Oct 22 '22 13:10

Rob Napier