CGContextRef currentContext = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContext(drawImage.frame.size);
[drawImage.image drawInRect:CGRectMake(0,0, drawImage.frame.size.width, drawImage.frame.size.height)];
CGContextSetRGBStrokeColor(currentContext, 0.0, 0.0, 0.0, 1.0);
UIBezierPath *path=[self pathFromPoint:currentPoint
toPoint:currentPoint];
CGContextBeginPath(currentContext);
CGContextAddPath(currentContext, path.CGPath);
CGContextDrawPath(currentContext, kCGPathFill);
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
在上面的代码中,由
CGContextRef currentContext
创建的UIGraphicsGetCurrentContext()
并将其传递给CGContextBeginPath CGContextAddPath CGContextDrawPath
currentContext有参数给他们,对我来说不起作用!当我在做touchMovie
时。当我直接通过
UIGraphicsGetCurrentContext()
代替currentContext
时,它对我有用。我想知道为什么会这样吗?@所有,请给我这个问题的建议。
最佳答案
问题在于,在启动图像上下文之后,currentContext
不再是当前上下文:
CGContextRef currentContext = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContext(drawImage.frame.size);
// Now the image context is the new current context.
因此,您应该反转这两行:
UIGraphicsBeginImageContext(drawImage.frame.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
编辑
正如Nicolas所指出的,您应该在不再需要图像上下文时结束它:
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); // Add this line.
编辑
另请注意,您正在设置笔触颜色,但使用fill命令绘制。
因此,您应该改为调用适当的颜色方法:
CGContextSetRGBFillColor(currentContext, 0.0, 1.0, 0.0, 1.0);