CoreGraphicsのPhotoshopの内部シャドウ効果に似たようなことをしたいと思います。この効果でパスを描画/塗りつぶすと、次のようなものが得られます。
2 に答える
この画像を作成するために作成する必要のあるレイヤーを、後ろから前に示します。
基本色、この場合は白の背景。
影。
影を落とす形。これは、内側の形状のバウンディングボックスを見つけ、そのボックスを影の幅よりも大きく拡大してから、内側の形状のボックスに穴を開けることによって作成されます。
これらを内側の形でクリップします。
次に、最後に周囲の色付きの形状を描画します。この場合は、内側の形状が切り取られた長方形です。
注:予想される外観に応じて、影を落とす形状は、前景色を塗りつぶす同じ形状である場合とそうでない場合があります。内側の形状と外側の形状の間の薄い部分は、影を減らします。その効果が望ましくない場合は、一貫した内側の影を取得するために、より大きな外側の形状が必要になります。また、影が外形を超えて伸びる場合は、影を明示的にクリッピングする必要があります。
この例の図形のように、中央に穴のある図形を描画するには、2つのサブパスを持つパスを描画する必要があります。1つのサブパスは外側のボックスになり、もう1つは内側の不規則な形状になります。デフォルトのゼロ以外の回転数ルールを使用している場合は、内側の不規則な形状とは反対の方向に外側のボックスのポイントを指定する必要があります。たとえば、外側のボックスのポイントを時計回りに指定するには、内側の形状のポイントを反時計回りに指定する必要があります。詳細については、パスに関するQuartz2Dプログラマーガイドのセクションを参照してください。
クォーツのインセット/インナードロップシャドウ
このコードをxcodeプレイグラウンドにドロップすると、次のようになります。