В одном из моих приложений я пытаюсь стереть / прозрачно обводить часть UIImage
, которую я рисую с использованием инфраструктуры CoreGraphics (CGContextRef
и т. Д.). В процессе я могу очистить рисунок за один раз, вызвав сообщение «removeAllObjects», но я не смог понять, как стереть часть рисунка. Гоша !! Я просидел весь день, но все равно безрезультатно, теперь это меня убивает. Пожалуйста, ребята, помогите мне отсюда. Короче говоря, мне нужно что-то вроде ластика, который может стереть часть моего рисунка. Ценю вашу помощь!!
Проблема со стиранием или прозрачным штрихом при использовании CoreGraphics framework
Ответы (2)
Просто сделай CGContextSetBlendMode(context, kCGBlendModeClear)
Этот вызов изменяет режим наложения цветов таким образом, что операции рисования будут очищать растровое изображение вместо рисования с цветом.
Чтобы вернуться к нормальному рендерингу, выполните CGContextSetBlendMode(context, kCGBlendModeNormal)
Очень полезно использовать разные режимы наложения.
Как правило, CGContext
- это холсты, предназначенные только для добавления, то есть вы можете только добавить больше краски, но не удалить уже нанесенную на них краску. Если ваш холст изначально был белым, вы можете закрасить его белым, чтобы имитировать и стереть операцию.
Простым решением было бы вручную очистить области удаляемого растрового изображения.
Сложное решение - сохранить все операции рисования, введенные пользователем, и деформировать их в результате операции стирания (это также упростит добавление режима отмены)
Примечание. Существует функция CGContextClearRect
, но обычно она работает должным образом только в контексте растровых изображений.
CGBitmapContextCreate
и предоставить свой собственный буфер поддержки - тогда вы можете изменить его напрямую, используя свой собственный код стирания.
- person rpetrich; 14.07.2010