使用 Core Graphics 绘制圆弧时绘制的额外线
Posted
技术标签:
【中文标题】使用 Core Graphics 绘制圆弧时绘制的额外线【英文标题】:Extra line drawn when drawing an arc with Core Graphics 【发布时间】:2014-01-16 12:02:16 【问题描述】:我目前在使用核心图形进行自定义绘图时遇到问题。当我尝试绘制一种带有圆角边框的矩形时,我得到了一条我不想要的额外线。我已经阅读了文档,它说当你画一条弧线时,它会在弧线的原点画一条线。但我没有成功找到避免这条线的解决方案。这是一张照片:
所以我想避开顶部的这条灰线,在我的弧线下
这是我的代码:
//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);
请原谅我糟糕的英语。
【问题讨论】:
删除CGContextAddArc
之后的CGContextClosePath(context);
。
当我删除它时,我得到link。
【参考方案1】:
圆弧底部的水平线是由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);
对不起我糟糕的法语;-)
【讨论】:
对不起,我有最后一个问题:当我尝试填充我的矩形时,它只填充弧而不填充矩形:link。我怎样才能填满整个矩形?以上是关于使用 Core Graphics 绘制圆弧时绘制的额外线的主要内容,如果未能解决你的问题,请参考以下文章