2015-04-10 1 views
0

У меня есть вид, который имеет UIImage и DrawView в качестве подзонов. Вид нити реагирует на касания и создает UIBezierPath для чертежа на изображение. Когда пользователь принимает их изменения, мне нужно объединить базовые UIImage и любые UIBezierPath, созданные в одном UIImage.Объединить UIImage и UIBezierPath в 1 UIImage

ответ

4

Сделайте UIBazierPath общедоступным свойством DrawView и продолжайте обновлять его, когда пользователь рисует изнутри DrawView. Когда пользователь нажимает кнопку «Принять», используйте следующий код, чтобы просто создать UIImageContext и ничья оба, sourceImage и bezierPath по контексту. Наконец, возьмите то, что нарисовано в контексте в resultImage.

UIBezierPath *path = drawView.Path // Your Bezier Path in DrawView 
UIImage *sourceImage = sourceImageView.image; // Your Source Image from ImageView. 
UIImage *resultImage = nil; 
UIGraphicsBeginImageContext(sourceImage.size); 
[sourceImage drawInRect:(CGRect){CGPointZero, sourceImage.size}]; 
[path stroke]; //Fill or Stroke path as you need. 
[path fill]; 

resultImage = UIGraphicsGetImageFromCurrentImageContext(); //taking the merged result from context, in a new Image. This is your required image. 

UIGraphicsEndImageContext(); 

//Use resultImage as you want. 
+0

Не могли бы вы предоставить более подробную информацию о вашем ответе? – abarisone

+0

Обновлен мой ответ. –

+0

Я использовал это в сочетании с http://stackoverflow.com/a/14119250/531479, и это было то, что мне было нужно. – CWitty