核心函数是:CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, intclockwise)
- CGContextRef: 图形上下文
- x,y: 开始画的坐标
- radius: 半径
- startAngle, endAngle: 开始的弧度,结束的弧度
- clockwise: 画的方向(顺时针,逆时针)
有了这个函数可以画出任意扇形,所以饼图也不再话下.
- #define PI 3.14159265358979323846
- #define radius 100
- static inline float radians(double degrees) {
- return degrees * PI / 180;
- }
- static inline void drawArc(CGContextRef ctx, CGPoint point, float angle_start, float angle_end, UIColor* color) {
- CGContextMoveToPoint(ctx, point.x, point.y);
- CGContextSetFillColor(ctx, CGColorGetComponents( [color CGColor]));
- CGContextAddArc(ctx, point.x, point.y, radius, angle_start, angle_end, 0);
- //CGContextClosePath(ctx);
- CGContextFillPath(ctx);
- }
- - (void)drawRect:(CGRect)rect {
- CGContextRef ctx = UIGraphicsGetCurrentContext();
- CGContextClearRect(ctx, rect);
- float angle_start = radians(0.0);
- float angle_end = radians(121.0);
- drawArc(ctx, self.center, angle_start, angle_end, [UIColor yellowColor]);
- angle_start = angle_end;
- angle_end = radians(228.0);
- drawArc(ctx, self.center, angle_start, angle_end, [UIColor greenColor]);
- angle_start = angle_end;
- angle_end = radians(260);
- drawArc(ctx, self.center, angle_start, angle_end, [UIColor orangeColor]);
- angle_start = angle_end;
- angle_end = radians(360);
- drawArc(ctx, self.center, angle_start, angle_end, [UIColor purpleColor]);
- }
id 博主 = [[KILONET.CNBLOGS.COM alloc] initWithValue:@"天堂向右,我依然向左"
网名:@"老舟"
兴趣:@"影音,阅读"
动态:@"系统架构设计,Android通信模块开发"
网址:@"http://kilonet.cnblogs.com"
签名:@"--------------------------------------------------
Stay Hungry , Stay Foolish
求 知 若 渴,处 事 若 愚
--------------------------------------------------"
]; // Never Release