Как применить мягкую тень к графике, в которой есть прозрачные области? - PullRequest
4 голосов
/ 20 июня 2011

Обычно я использую CALayer shadowRadius, но теперь мне также нужно использовать UIImage и применять к нему фигурные тени на основе содержимого изображения.

Например, когда у меня есть слой с текстом в неми я установил тень, она работает автоматически с текстом, а не только с прямоугольником слоя.

В Photoshop это называется «стиль слоя» и автоматически работает в зависимости от формы содержимого изображения..

Я боюсь, что мне нужно реализовать некоторую хардкорную логику Гарварда-Стэнфорда-MIT-NASA для наложения тени на «фигурное изображение», то есть изображение круглой иконки, где области вокругИконки полностью прозрачные.

Я могу манипулировать изображениями на уровне пикселей, поскольку я уже делаю это для рисования диаграмм, поэтому, если бы была реализация некоторых фантастических алгоритмов с открытым исходным кодом, этобыть фантастическимИ если нет: как это в основном работает?Я предполагаю, что я "просто" попытался бы как-то размыть версию изображения в градациях серого, а затем наложить ее на не размытую версию.

1 Ответ

2 голосов
/ 20 июня 2011

Полагаю, я бы "просто" попытался как-то размыть версию изображения в градациях серого, а затем наложить ее на не размытую версию.

Вообще-то, это так. За исключением того, что вместо размытой версии изображения в градациях серого, необходимо сделать размытую версию изображения в сплошном цвете (т.е. сохранить альфа-канал, но сделать все пиксели черными). Хотя слежка CALayer должна сделать это уже для вас.

Если ваши изображения уже скомпонованы на фоне (то есть без реальной прозрачности), у вас возникла более сложная проблема, так как вам сначала нужно «удалить» фон, прежде чем вы сможете иметь форму объекта, чтобы создать тень.

...