为什么我的CoreGraphics形状没有显示边框?

时间:2012-02-21 17:36:12

标签: iphone ios core-graphics

这是我的代码:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);

CGContextSetFillColorWithColor(context, [BUTTON_COLOR CGColor]);
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextSetLineWidth(context, 1);

int radius = CORNER_RADIUS;

CGContextMoveToPoint(context, 0, self.frame.size.height / 2);
CGContextAddLineToPoint(context, POINT_WIDTH, self.frame.size.height);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius, 
                            rect.origin.y + rect.size.height);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, 
                    rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, 
                    radius, 0.0f, -M_PI / 2, 1);
CGContextAddLineToPoint(context, POINT_WIDTH, 0);
CGContextAddLineToPoint(context, 0, self.frame.size.height / 2);

CGContextClosePath(context);
CGContextDrawPath(context, kCGPathFillStroke);

为什么不在形状周围画一个边框?

编辑:现在它绘制了形状,这要归功于更改最后一行,但它会在它周围画一条额外的线,如下所示:

http://cl.ly/0u0e051a060m161u0n08

1 个答案:

答案 0 :(得分:3)

使用CGContextDrawPath(context, kCGPathFillStroke)代替CGContextFillPath()CGContextStrokePath()

问题是,在第一次调用CGContextFillPath()CGContextStrokePath()之后,上下文的路径被清除,因此第二次调用没有可以使用的路径。