【发布时间】:2010-08-21 00:50:16
【问题描述】:
我画了两个重叠的圆圈。我希望能够将它们填充和描边作为合并的新形状。
目前,我创建了一次路径序列,对其进行描边,然后创建一个副本,填充它并将两条相同的路径叠加在一起,使它们显示为一个形状。有没有更好的方法或者这样可以吗?
更新:这是一个示例代码:
CGMutablePathRef path = CGPathCreateMutable();
CGContextSetStrokeColorWithColor(theContext, strokeColor.CGColor);
CGContextSetLineWidth(theContext, 2);
CGContextSetFillColorWithColor(theContext, fillColor.CGColor);
CGRect rect1 = CGRectMake(0,0, mySize*0.6, mySize*0.6);
CGRect rect2 = CGRectMake(mySize*0.4,0, mySize*0.6, mySize*0.6);
CGPathAddEllipseInRect(path, NULL, rect1);
CGPathAddEllipseInRect(path, NULL, rect2);
CGContextAddPath(theContext, path);
CGContextDrawPath(theContext, kCGPathFillStroke);
CGPathRef pathFill = CGPathCreateCopy ( path );
CGContextAddPath(theContext, pathFill);
CGContextDrawPath(theContext, kCGPathFill);
CGPathRelease(path);
CGPathRelease(pathFill);
如您所见,我创建了原始路径的副本并将其绘制在没有笔划的顶部,因此最终它看起来像一个统一的形状。有没有办法避免创建重复项?
【问题讨论】:
-
那么,你想要两个圈子的联合,对吧? (请参阅imgur.com/med3v。)您希望它们都被填充和抚摸吗?请将您当前的代码编辑到您的问题中;我怀疑您所做的工作超出了您的需要,但希望确定并能够明确指出。
-
我添加了一些代码。请参见上文。
标签: core-graphics cgpath