Search code examples
iphonecore-graphicspolygondrawcgpath

How to draw polygons with CGPath?


I have been reading thru the documentation however it is not immediatly clear to me how to draw a polygon using CGPath. All I need to do is to draw CGPath around something like this:

__
\  \ 
 \  \
  \__\

Could anyone please provide an snippet on how to do this?

Additionally I assume CGPathContainsPoint will help me determine if a point is inside such path?, or does the path have to be a solid drawing

Also how can i move the cgpath around? Is this as easy as changing something like the origin just like in cgrect?

Thank you.

-Oscar


Solution

  • You should do it like this:

    - (void)drawRect:(CGRect)rect { 
    
            CGContextRef context = UIGraphicsGetCurrentContext(); 
    
            CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
            CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
    
            // Draw them with a 2.0 stroke width so they are a bit more visible.
            CGContextSetLineWidth(context, 2.0);
    
            for(int idx = 0; idx < self.points.count; idx++)
            {
    
                point = [self.points objectAtIndex:idx];//Edited 
                if(idx == 0)
                {
                    // move to the first point
                    CGContextMoveToPoint(context, point.x, point.y);
                }
                else
                {
                    CGContextAddLineToPoint(context, point.x, point.y);
                }
            }
    
            CGContextStrokePath(context);
    }
    

    Note here, the points is the array of points you want to draw the polygon for. So it should be circular path like: You are drawing a triangle of points (x1, x2, x3) then you should pass into array (x1, x2, x3, x1).

    Hope this helps.