我目前在使用核心图形进行自定义绘图时遇到问题。当我尝试绘制一种带有圆形边框的矩形时,我会得到一条我不想要的额外线条。我已经阅读了文档,它说当你绘制一个弧时,它会画一条线到弧的原点。但我没有成功找到一个可以避免这条线的解决方案。这是一张照片:
所以我想在我的弧线下方顶部避开这条灰线
这是我的代码:
//Tracer
CGContextBeginPath(context);
CGContextSetStrokeColorWithColor(context, wormBorderColor);
CGContextSetFillColorWithColor(context, wormFillColor);
//Tracer la ligne de gauche
CGContextMoveToPoint(context, leftX, startingY);
CGContextAddLineToPoint(context, leftX, startingY-wormHeight);
//CGContextClosePath(context);
//tracer l'arc supérieur
CGContextMoveToPoint(context, rightX, startingY-wormHeight);
CGContextAddArc(context, centerX, startingY-wormHeight, echelleSize/2, 0,M_PI , 1);
CGContextClosePath(context);
CGContextAddLineToPoint(context, rightX, startingY);
//CGContextAddRect(context, CGRectMake(leftX, startingY, rightX-leftX, wormHeight));
//CGContextClosePath(context);
CGContextStrokePath(context);
请原谅我可怜的英语。
答案 0 :(得分:2)
弧底部的水平线由CGContextClosePath
引起。要使没有水平线的同一图像改变代码:
//tracer l'arc supérieur
CGContextMoveToPoint(context, rightX, startingY-wormHeight);
CGContextAddArc(context, centerX, startingY-wormHeight, echelleSize/2, 0,M_PI , 1);
CGContextClosePath(context);
CGContextAddLineToPoint(context, rightX, startingY);
为:
//tracer l'arc supérieur
CGContextMoveToPoint(context, rightX, startingY-wormHeight);
CGContextAddArc(context, centerX, startingY-wormHeight, echelleSize/2, 0,M_PI , 1);
CGContextMoveToPoint(context, rightX, startingY-wormHeight);
CGContextAddLineToPoint(context, rightX, startingY);
修改强>
修改代码以便以可填充的方式绘制路径,并在末尾添加填充。
//Tracer
CGContextBeginPath(context);
CGContextSetStrokeColorWithColor(context, wormBorderColor);
CGContextSetFillColorWithColor(context, wormFillColor);
//Déplacez à l'origine
CGContextMoveToPoint(context, leftX, startingY);
//Tracer la ligne de gauche
CGContextAddLineToPoint(context, leftX, startingY-wormHeight);
//tracer l'arc supérieur - clockwise
CGContextAddArc(context, centerX, startingY-wormHeight, echelleSize/2, 0,M_PI , 0);
//Tracer la ligne de droite
CGContextAddLineToPoint(context, rightX, startingY);
CGContextStrokePath(context);
CGContextFillPath(context);
对不起我可怜的法国人; - )