Проблема со стиранием или прозрачным штрихом при использовании инфраструктуры CoreGraphics - PullRequest
4 голосов
/ 14 июля 2010

В одном из моих приложений я пытаюсь стереть / сделать прозрачный штрих в части UIImage, которая рисуется с использованием инфраструктуры CoreGraphics (CGContextRef и т. Д.). В процессе я могу очистить рисунок за один раз, вызвав сообщение «removeAllObjects», но я не смог понять, как стереть часть изображения чертежа. Гоша !! Я сидел целый день, но до сих пор нет результатов, теперь это убивает меня. Пожалуйста, ребята, помогите мне отсюда. Короче говоря, мое требование - это что-то вроде ластика, который может стереть часть моего рисунка. Ценю вашу помощь !!

Ответы [ 2 ]

5 голосов
/ 26 октября 2011

Просто сделай CGContextSetBlendMode(context, kCGBlendModeClear)

Этот вызов изменяет режим смешивания цветов таким образом, чтобы операции рисования очищали растровое изображение вместо рисования с помощью цвета.

Чтобы вернуться к обычному рендерингу, выполните CGContextSetBlendMode(context, kCGBlendModeNormal)

Использование различных режимов наложения может быть очень полезным.

0 голосов
/ 14 июля 2010

Как правило, CGContext s - это холсты только для добавок, то есть вы можете только добавить больше краски, но не удалить существующую краску, которую вы на них наносили.Если ваш холст для начала был белым, вы можете закрасить белым, чтобы подделать и стереть операцию.

Простым решением было бы вручную очистить области удаляемого растрового изображения.

Комплексное решение состоит в том, чтобы сохранить все операции рисования, которые пользователь ввел, и деформировать их в результате операции стирания (это также сделает добавление режима отмены простым)

Примечание: есть CGContextClearRect функция, но обычно она работает только так, как ожидается в растровых контекстах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...