-[NSBezierPath setClip:] を使うとちょっとしたマスキングが行える。
例えばこんなマスク。
これを使うとこんな絵が描ける。
1番目のマスクは角丸の NSBezierPath を作り setClip: を呼ぶだけ。2番目は角丸の NSBezierPath に一回り大きい矩形の範囲を -[appendBezierPathWithRect:] で追加した後、-[setWindingRule:] に NSEventOddWindingRule を指定して中抜きするようにする。
(例)
[path22 appendBezierPathWithRect:baseFrame22];
[path22 setWindingRule:NSEvenOddWindingRule];
その上で -[setClip:] を呼ぶとそれ以降の描画がフチの部分だけに限定される。つまり中の部分がマスキングされる。
サンプルのソースコードは GitHub からどうぞ。
NSBezierPathSpecialClip at master from xcatsan's SampleCode - GitHub
ビルドして実行すると下記のウィンドウが出る。