По вашему запросу в комментариях, здесь более глубокое исследование. Рассмотрим следующий снимок экрана (StackOverflow сокращает его для меня - это помогает увидеть его в полном размере.):
То, что вы видите здесь, - это 5 различных подходов к рисованию (сверху вниз) на трех разных фонах (слева направо). (Я также уменьшил альфа-заливку с 0,8 до 0,5, чтобы облегчить просмотр эффектов.) Три различных подхода к рисованию (сверху вниз):
- Только штрих, а не заливка, с тенью
- То, как вы разместили код в исходном вопросе
- Штрих и заливка без тени
- Просто тень сама по себе
- Способ, которым @ DavidRönnqvist предложил в своем ответе.
Три разных фона должны быть самоочевидными.
Вы сказали в своем первоначальном вопросе:
Первое, что я заметил, тень только вокруг обводки.
Вот почему я включил первый подход к рисованию. Вот как это на самом деле выглядит, когда есть только штрих, без заливки и (следовательно) только штрих, который затеняется.
Тогда вы сказали:
Но это пока не проблема. Тень позади пути / прямоугольника
все еще видимый, что означает: цвет тени влияет на заливку
цвет моего пути. Цвет заливки должен быть белым, но вместо этого серым.
Ваш оригинальный код - следующая версия (# 2). Вы видите, что тень для обводки на темнее , чем тень для заливки. Это связано с тем, что альфа цвета обводки равен 1.0
, а альфа заливки меньше 1.0
. Это может быть легче увидеть в версии № 4, которая представляет собой просто тень - она темнее по краю, где находится штрих. Версия № 3 показывает рисунок без тени. Увидимся, вы можете увидеть красный и изображение полуобнаженного в заливке формы? Таким образом, в исходном чертеже вы видите собственную тень объекта через сам объект.
Если это не имеет смысла, попробуйте подумать о куске стекла, у которого есть оттенок (если вы любите фотографировать, подумайте о фильтре нейтральной плотности ). Если вы удерживаете это стекло между источником света и другой поверхностью, а затем смотрите со стороны и смотрите только на нижнюю поверхность, вы знаете, что полупрозрачное стекло будет отбрасывать некоторую тень, но не такую темную тень, как нечто полностью непрозрачный (как кусок картона). Это то, что вы видите - вы смотрите сквозь объект на его тень.
Версия # 5 - это подход @ DavidRönnqvist. Эффект дурака, о котором я говорил в своем комментарии, легче всего оценить (для меня, во всяком случае), глядя на формы, нарисованные на фоне изображения. То, как он выглядит (в версии № 5), состоит в том, что фигура представляет собой скопированную часть изображения, на которую наложена полупрозрачная белая маска некоторого вида. Если вы оглянетесь на версию №3, то ясно, что в отсутствие тени происходит: вы смотрите через полупрозрачную форму на изображении ниже. Затем, если вы посмотрите на версию # 4, также станет ясно, что у вас есть тень, отбрасываемая объектом, который находится позади вашего глаза / камеры. Оттуда я бы сказал, что при взгляде на версию №2 поверх изображения также ясно, что происходит (даже если оно менее четкое на сплошном цвете). На первый взгляд, мой глаз / мозг не знает, на что он смотрит в версии # 5 - есть момент «визуального диссонанса», прежде чем я устанавливаю мысленную модель «скопированной, маскированной части изображения, плавающей над оригиналом» изображение. "
Так что если этот эффект (# 5) был тем, к чему вы стремились, тогда решение Дэвида будет работать отлично. Я просто хотел отметить, что это своего рода неинтуитивный эффект.
Надеюсь, это полезно. Я поместил полный пример проекта, который использовал для создания этого скриншота, на GitHub .