0

以下のコードをフィルパスに使用すると、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);

また、タッチが始まると線を作成しています..しかし、線を作成する前にフィルパスが消去されます..

4

2 に答える 2

1

交換

CGContextFillPath(context1);
CGContextStrokePath(context1);

CGContextDrawPath(context1, kCGPathFillStroke);

これにより、途中で消去することなく、現在のパスを塗りつぶしてストロークします。

于 2013-08-12T11:39:08.880 に答える
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
于 2013-08-12T11:37:07.457 に答える