Внутренняя тень в Core Graphics - PullRequest
10 голосов
/ 30 января 2010

Я хочу сделать что-то похожее на эффект внутренней тени Photoshop в Core Graphics. Если я рисую / заполняю путь с этим эффектом, я хочу получить что-то похожее на следующее: alt text

Ответы [ 2 ]

11 голосов
/ 03 февраля 2010

Вот слои, которые вам нужно создать, чтобы сделать это изображение, от начала до конца:

Основной цвет, в данном случае белый фон.

Тень.

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

Обрезать их внутренней формой.

Затем, наконец, рисуем окружающую цветную форму, в данном случае прямоугольник с вырезанной внутренней формой.

Примечание. В зависимости от ожидаемого вида, отбрасывающая тень может совпадать или не совпадать с цветом переднего плана. Тонкий участок между внутренней формой и внешней формой отбрасывает уменьшенную тень. Если этот эффект нежелателен, для получения согласованной внутренней тени потребуется более крупная внешняя форма. Кроме того, явное ограничение тени необходимо в том случае, если тень выходит за пределы внешней формы.

Чтобы нарисовать фигуру с отверстием в середине, как в примере с этим примером, вам нужно нарисовать путь с двумя подпутями. Один подпуть будет внешней коробкой, а другой - внутренней неправильной формой. Если вы используете правило ненулевого числа обмоток по умолчанию, вам нужно будет указать точки для внешнего поля в направлении, противоположном внутренней неправильной форме. Например, указание точек внешнего блока в порядке по часовой стрелке потребует указания точек внутренней формы в направлении против часовой стрелки. Обратитесь к разделу Руководство программиста Quartz 2D по путям для получения более подробной информации.

0 голосов
/ 11 декабря 2015

Inset / Inner Drop-shadow в кварце

Оставьте этот код на игровой площадке xcode, и вы уже в пути:

https://gist.github.com/eonist/520fa35958c123ad6840

...