UIGraphicsGetCurrentContext

UIGraphicsGetCurrentContext

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);

08-15 19:12