核心图形 - 填充主路径内部路径中的透明色

时间:2014-06-20 04:33:05

标签: ios objective-c drawing core-graphics

我已经通过路径坐标实现了地板绘制,并且我还需要在主路径中填充另一条路径,并且应该在内部路径中显示透明颜色。我试过填充透明色,然后内部路径显示外部路径的颜色。但是如何清除外部路径创建的外部路径区域以显示viewController.view的背景?

任何建议都会很明显。

Here is the screenshot with inner & outer path

if([[self.arPoints objectAtIndex:iCount] objectForKey:@"CoordsOuter"])
        {
            self.levelPointInfo = [[self.arPoints objectAtIndex:iCount] objectForKey:@"CoordsLine"];
            self.levelPointInfo=[self.levelPointInfo substringFromIndex:1];
            self.levelPointInfo=[self.levelPointInfo substringToIndex:[self.levelPointInfo length]-2];
            self.arLevelPoints=[self.levelPointInfo componentsSeparatedByString:@");("];

            startPoint=CGPointMake([[[[self.arLevelPoints objectAtIndex:0] componentsSeparatedByString:@";"] objectAtIndex:1] floatValue], [[[[self.arLevelPoints objectAtIndex:0] componentsSeparatedByString:@";"] objectAtIndex:2] floatValue]);

            for(int jCount=1; jCount<[self.arLevelPoints count];++jCount)
            {
                @autoreleasepool {
                endPoint = CGPointMake([[[[self.arLevelPoints objectAtIndex:jCount] componentsSeparatedByString:@";"] objectAtIndex:1] floatValue], [[[[self.arLevelPoints objectAtIndex:jCount] componentsSeparatedByString:@";"] objectAtIndex:2] floatValue]);
                //CGContextSaveGState(context);
                CGContextSetLineCap(context, kCGLineCapSquare);
                CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
                CGContextSetLineWidth(context, LINE_WIDTH);
                CGContextMoveToPoint(context,( (startPoint.x-minX)/((maxX-minX)/(self.frame.size.width-(2*paddingX)))+(paddingX) )/self.scaleValue,(self.frame.size.height - ( (startPoint.y-minY)/((maxY-minY)/(self.frame.size.height-(2*paddingY)))+(paddingY)))/self.scaleValue);
                CGContextAddLineToPoint(context,( (endPoint.x-minX)/((maxX-minX)/(self.frame.size.width-(2*paddingX)))+(paddingX))/self.scaleValue, (self.frame.size.height - ((endPoint.y-minY)/((maxY-minY)/(self.frame.size.height-(2*paddingY)))+(paddingY)))/self.scaleValue);

                CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);
                CGContextStrokePath(context);
                //CGContextRestoreGState(context);
                startPoint = endPoint;
                }
            }
        }
if([[self.arPoints objectAtIndex:iCount] objectForKey:@"CoordsInner"])
        {
            self.levelPointInfo = [[self.arPoints objectAtIndex:iCount] objectForKey:@"CoordsMinus"];
            self.levelPointInfo=[self.levelPointInfo substringFromIndex:1];
            self.levelPointInfo=[self.levelPointInfo substringToIndex:[self.levelPointInfo length]-2];
            self.arLevelPoints=[self.levelPointInfo componentsSeparatedByString:@");("];

            CGPoint firstPoint;

            for(int jCount=0; jCount<[self.arLevelPoints count];++jCount)
            {

0 个答案:

没有答案