创建一行时,CGContextFillPath(上下文)将被删除

时间:2013-08-12 11:27:21

标签: iphone ios core-graphics cgcontextref

我在viewDidLoad中使用以下代码作为填充路径,它完美无缺

UIGraphicsBeginImageContext(_drawingPad.frame.size);
CGContextRef context1 = UIGraphicsGetCurrentContext();

CGContextMoveToPoint(context1, 300, 300);
CGContextAddLineToPoint(context1, 400, 350);
CGContextAddLineToPoint(context1, 300, 400);
CGContextAddLineToPoint(context1, 250, 350);
CGContextAddLineToPoint(context1, 300, 300);

CGContextClosePath(context1);
//CGContextStrokePath(context1);

CGContextSetFillColorWithColor(context1, [UIColor redColor].CGColor);
CGContextFillPath(context1);
CGContextStrokePath(context1);

我也会在触摸开始时创建一条线。 但在我创建线之前,填充路径会被删除..

2 个答案:

答案 0 :(得分:1)

替换

CGContextFillPath(context1);
CGContextStrokePath(context1);

通过

CGContextDrawPath(context1, kCGPathFillStroke);

这将填充描边当前路径而不删除它们之间。

答案 1 :(得分:0)

你试图在不创建路径的情况下绘制路径。

尝试以下方法:

UIGraphicsBeginImageContext(_drawingPad.frame.size);
CGContextRef context1 = UIGraphicsGetCurrentContext();

CGMutablePathRef path = CGPathCreateMutable();

CGPathMoveToPoint(path,300,300);
CGPathAddLineToPoint(path,400,350);
CGPathAddLineToPoint(path,300,400);
CGPathAddLineToPoint(path,250,350);
CGPathAddLineToPoint(path,300,300);

CGPathCloseSubpath(path);

CGContextSetStrokeColorWithColor(context1, [UIColor blackColor].CGColor);
CGContextSetFillColorWithColor(context1, [UIColor redColor].CGColor);


CGContextAddPath(context1,path);

//Now you can fill and stroke the path
CGContextFillPath(context1);
CGContextStrokePath(context1);

CGPathRelease(path); //free up memory