У меня есть вид, который имеет UIImage
и DrawView
в качестве подзонов. Вид нити реагирует на касания и создает UIBezierPath
для чертежа на изображение. Когда пользователь принимает их изменения, мне нужно объединить базовые UIImage
и любые UIBezierPath
, созданные в одном UIImage
.Объединить UIImage и UIBezierPath в 1 UIImage
0
A
ответ
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.
Не могли бы вы предоставить более подробную информацию о вашем ответе? – abarisone
Обновлен мой ответ. –
Я использовал это в сочетании с http://stackoverflow.com/a/14119250/531479, и это было то, что мне было нужно. – CWitty