Добавить изображения из массива в ImageView

Я пытаюсь сделать функцию отмены для моего приложения для рисования в iOS. Мой подход заключается в том, что после каждого рисунка (линии, прямые линии, квадраты, круги) рисунок будет добавлен в массив, так что я могу вытолкнуть / удалить lastObjectIndex массива при отмене, а затем перерисовать содержимое массива в просмотр изображения. Я использую NSMutableArray и UIImage и использую UIGraphicsGetImageFromCurrentImageContext. У меня вопрос, как я могу отобразить все массивы изображений в одном UIImageView?

Вот мой код:

imgArray = [[NSMutableArray alloc] init];

UIImage *tempImg = [[UIImage alloc] init];
tempImg = UIGraphicsGetImageFromCurrentImageContext();
[imgArray addObject:tempImg];

UIGraphicsEndImageContext();

UIGraphicsBeginImageContext(mainImage.frame.size);
[mainImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
[tempImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) blendMode:kCGBlendModeNormal alpha:opacity];
mainImage.image = tempImg; //UIGraphicsGetImageFromCurrentImageContext();
tempImage.image = nil;
UIGraphicsEndImageContext();

1 ответ

Насколько я понимаю, ваша модель - это графическое приложение с начальным фоном, а затем с набором слоев, каждый слой имеет объект или объекты на нем.

Если это так, то ваши сохраненные изображения будут представлять этот стек. Вы можете сохранить временное изображение, представляющее n-1 стека, а затем текущее изображение, чтобы ускорить рендеринг. Фактически, я бы использовал временное изображение в представлении и текущий активный объект в другом представлении поверх временного.

После отмены вы можете просто стереть текущий активный объект. Затем вторая отмена заставит вас повторно визуализировать временную пиктограмму, начиная с изображения 0 и рисуя каждый слой поверх базового изображения. Что делает эту работу, так это то, что каждый слой прозрачен, за исключением нарисованных битов.

Чтобы создать временное изображение, я бы использовал растровый контекст и применил слои в коде, не зная, будут ли методы Quartz делать это для вас или нет (они вполне могут).

Другие вопросы по тегам