निम्नलिखित कोड एक ढाल के साथ लाल से हरे रंग के आधा चक्र खींचता है। यह वही नहीं है जो मैं चाहता था। मुझे चौड़ाई 5 पिक्सल की चाप की उम्मीद है जो ढाल के साथ चित्रित है।मैं एक ढाल भरा आर्क कैसे बना सकता हूं, यानी इंद्रधनुष?
यह दिखाने में कोई मदद कि मैं गलत कहां गया हूं, इसकी सराहना की जाएगी।
चार्ल्स
-(void) DrawRainbow {
// Create an arc path
float x = 150.0;
float y = 220.0;
float radius = 75.0;
float startAngle = M_PI;
float endAngle = 2*M_PI;
bool clockWise = false;
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, nil, x, y, radius, startAngle, endAngle, clockWise);
// Setup the gradient
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = {
1.0, 0.0, 0.0, 1.0, // Start color is red
0.0, 1.0, 0.0, 1.0 }; // End color is green
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradientFill =
CGGradientCreateWithColorComponents (colorSpace, components,
locations, num_locations);
// setup gradient points
CGRect pathRect = CGPathGetBoundingBox(path);
CGPoint myStartPoint, myEndPoint;
myStartPoint.x = CGRectGetMinX(pathRect);
myStartPoint.y = CGRectGetMinY(pathRect);
myEndPoint.x = CGRectGetMaxX(pathRect);
myEndPoint.y = CGRectGetMinY(pathRect);
// draw the gradient
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 5.0);
CGContextAddPath(context, path);
CGContextSaveGState(context);
CGContextClip(context);
CGContextDrawLinearGradient (context, gradientFill,
myStartPoint, myEndPoint, 0);
CGContextRestoreGState(context);
CGGradientRelease(gradientFill);
CGColorSpaceRelease(colorSpace);
}
लिंक्ड दस्तावेज़ भी एक उदाहरण (चित्रा 8-2) यह है कि क्या ओ पी चाहता था, नहीं एक रेडियल के रूप में छोड़कर पता चलता है। प्रक्रिया को समझाते हुए एक उत्कृष्ट प्रारंभिक बिंदु होना चाहिए। – Doc