Assignment 3 – extra credit 4

For those that trying to implement the Hello Polly (Part II) Assignment  (winter 2010)

here is a hint for:

Fill the background of the custom view or the interior of the polygon with a gradient

- (void)drawRect:(CGRect)rect
{

CGContextRef context = UIGraphicsGetCurrentContext();

[[UIColor lightGrayColor] setFill];
UIRectFill([self bounds]);

NSArray *myPolygonArray = [PolygonView pointsForPolygonInRect:[self bounds]
numberOfSides:[polygon numberOfSides]];

CGMutablePathRef path = CGPathCreateMutable();
NSUInteger index = 0;
for (NSValue *theValue in myPolygonArray) {
if (index == 0) {
CGPathMoveToPoint(path, nil, [theValue CGPointValue].x, [theValue CGPointValue].y);
}
if (index != 0) {
CGPathAddLineToPoint(path, nil, [theValue CGPointValue].x, [theValue CGPointValue].y);
}

if (++index >= [myPolygonArray count]) {
break;
}

}

CGPathCloseSubpath(path);
CGContextAddPath(context, path);

[[UIColor blackColor] setStroke];

CGContextDrawPath(context, kCGPathStroke);
CGContextAddPath(context, path);
CGContextClip(context);

//Prepare the gradient

CGGradientRef gradient;
CGColorSpaceRef rgbColorspace = CGColorSpaceCreateDeviceRGB();
CGFloat components[] = { 204.0 / 255.0, 224.0 / 255.0, 244.0 / 255.0, 1.00,
29.0 / 255.0, 156.0 / 255.0, 215.0 / 255.0, 1.00,
0.0 / 255.0,  50.0 / 255.0, 126.0 / 255.0, 1.00};
gradient = CGGradientCreateWithColorComponents(rgbColorspace, components, nil,
sizeof(components)/(sizeof(components[0])*4));
CGColorSpaceRelease(rgbColorspace);
CGPoint start = CGPointMake(self.bounds.origin.x, self.bounds.origin.y);
CGPoint end = CGPointMake(self.bounds.origin.x, self.bounds.size.height);
CGContextDrawLinearGradient(context, gradient, start, end, 0);

[polygonLabel setText:[polygon name]];
}

Leave a Reply

Your email address will not be published. Required fields are marked *