views:

804

answers:

3

Hello,

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

+2  A: 

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 ponits is the array of points you want to draw 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.

Thanks,

Madhup

Madhup
You don't reference an array here, you just add the same point repeatedly.
David Kanarek
@David I thought this was understood
Madhup
Thank you for you help.
OscarMk
He could've understood it, but I think it's usually best to post correct code or explicitly state that the code contains errors/omissions. When teaching a new concept, what's obvious to the teacher may be complex and hard to see for the student.
David Kanarek
@David: Ok I will keep in mind this thing next time, while posting an answer.
Madhup
+2  A: 

Stanford's CS193P class on iPhone had a project called HelloPoly that might be exactly what you want - see class home page for the spec and then see the video for how it was implemented (and google solutions from people who did the assignment).

Adam Eberbach
+1  A: 

See Apple's QuartzDemo application. It has code for doing this, as well as many other Quartz drawing functions.

Brad Larson