2009-12-03 4 views
0

Можно ли провести ничью в UIView с CGPath и экспортировать его как PNG?Экспортировать CGPath как JPG или PNG

+0

Да. О, я полагаю, вы хотели код, не так ли? .. – U62

+0

Нет, честно говоря, я просто хочу, чтобы указатель знал лучше. Я не хочу рыбу, я хочу научиться ловить рыбу. – ariel

+0

Во всяком случае, спасибо. Да - это что-то действительно большое. Как это важно, но просто знать, что это возможно, хорошо. – ariel

ответ

3

Предполагая, что вы хотите UIImage, а не PNG-файл, вы можете сделать что-то вроде этого:

UIGraphicsBeginImageContext(size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
CGContextSetLineWidth(context, 2.0); 
CGContextSetLineCap(context, kCGLineCapSquare); 

//DRAW YOUR PATH HERE 

CGContextStrokePath(context); 

myUIImage = UIGraphicsGetImageFromCurrentImageContext(); 
[myUIImage retain]; 

UIGraphicsEndImageContext(); 
+0

Это может привести к размытым изображениям. UIGraphicsBeginImageContextWithOptions может использоваться с последним аргументом как 0.0, чтобы избежать этого. – jarryd

1

Самый чистый способ сделать это - снова выполнить весь рисунок в контексте изображения, созданного UIGraphicsBeginImageContext(), получить из него UIImage, а затем сохранить его с помощью функций UIImagePNG/JPEGRepresentation().

Обратите внимание, что UIView не «удерживает» изображения. Вы можете rerender слой UIView, но это грубое нарушение MVC (вы используете представления для хранения данных модели!), И это не выглядит чистым для меня.

Смежные вопросы