Передача значения UIGraphicsGetCurrentContext в CGContextRef не работает? - PullRequest
5 голосов
/ 29 февраля 2012
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, это работает для меня.Я хочу знать, почему это так?

@ All Пожалуйста, сообщите мне об этой проблеме.

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012

Проблема в том, что currentContext больше не является текущим контекстом после запуска контекста изображения:

CGContextRef currentContext = UIGraphicsGetCurrentContext();
UIGraphicsBeginImageContext(drawImage.frame.size);
// Now the image context is the new current context.

Так что вы должны инвертировать эти две строки:

UIGraphicsBeginImageContext(drawImage.frame.size);
CGContextRef currentContext = UIGraphicsGetCurrentContext();

Редактировать

Как отметил Николас, вы должны завершить контекст изображения, когда он вам больше не нужен:

drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); // Add this line.

Редактировать

Также обратите внимание, что вы устанавливаете цвет штрих , но рисуете с помощью команды fill .

Поэтому вместо этого следует вызвать соответствующий метод цвета:

CGContextSetRGBFillColor(currentContext, 0.0, 1.0, 0.0, 1.0);
1 голос
/ 29 февраля 2012

UIGraphicsBeginImageContext создает новый контекст и устанавливает его в текущем контексте. Так что вы должны сделать

CGContextRef currentContext = UIGraphicsGetCurrentContext();

после UIGraphicsBeginImageContext. В противном случае вы выбираете контекст, и этот контекст немедленно заменяется на UIGraphicsBeginImageContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...