石英弧,填充,描边和路径

时间:2011-12-18 17:24:18

标签: quartz-graphics quartz-2d cgcontext

我必须创建一些位于圆圈侧面的自定义按钮(如右侧图像中的示例:http://dribbble.com/shots/352571-Game-UI-Bottom-Left

我尝试使用以下代码创建基本形状:

CGContextSetLineWidth(context, 2.0);
CGContextAddArc(context, 200, 200, 100, -M_PI_4, M_PI + M_PI_4, 1);
CGContextAddArc(context, 200, 200, 60, M_PI + M_PI_4,-M_PI_4 , 0);
CGContextClosePath(context);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextFillPath(context);
CGContextAddArc(context, 200, 200, 100, -M_PI_4, M_PI + M_PI_4, 1);
CGContextAddArc(context, 200, 200, 60, M_PI + M_PI_4,-M_PI_4 , 0);
CGContextClosePath(context);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextStrokePath(context);

我从来没有做过一些核心图形(只画一些小东西,比如画一个圆圈和东西......)。令人惊讶的是,为了抚摸它的形状和痛苦,我必须重新创造这条道路。 我想有一些非常聪明的方法可以做到这一点吗? ;) 因为我在这里,我将不得不在这个形状中绘制一些渐变,以防它使整个东西变得复杂;) 谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

检查以下功能以创建单个路径:

CGPathCreateMutable()
CGPathAddRect()/CGPathAddRects()
CGContextAddPath()

...并且为了提高性能,请记住如果要多次绘制它,请缓存此路径!