画像を背景に配置して、実際の使用感を確かめてみよう。
悪くは無いが少し手を加えてみる。Preview.app 風に灰色と白の点線でどうだろうか。
これにしよう。
ソース:RubberBand-7.zip
点線の描画には NSBezierPath を使う。
CGFloat dasharray[] = {3.0, 3.0};
NSBezierPath* path = [NSBezierPath bezierPath];
[path appendBezierPathWithRect:_rect];
[path setLineWidth:0.5];
[[NSColor grayColor] set];
[path setLineDash:dasharray count:2 phase:0.0];
[path stroke];
[[NSColor whiteColor] set];
[path setLineDash:dasharray count:2 phase:3.0];
[path stroke];
NSBezierPath#setLineDash:count:phase: を使うと簡単に描ける。
最初に渡す配列は描画と非描画のドットパターンを表す。例えば今回の {3.0, 3.0}は下のようなパターンを表す。最後の phaseはどっとパターンを何ドット目から開始するかを指定する(一種オフセットのようなもの)。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb_feziOagFGCeTDm31HRw-BtH5c3NNd58hrjGOq_xVJmF-pR4YJFGjNTu2pTW7vS8GgfRLdUqBl1hyphenhyphenfiMuMIjJICCa08dIzpx91yaX-qWZ3LnA9yTgmyruMyROhHHxhTkqyijFWoSiS2J/s400/080421-0005.png)
同じドットパターンで phase だけづらして描けば今回のような白と灰色の点線になる。
なおそのまま描画するとアンチエイリアスが効いてしまい線がぼやけてしまう。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4gTB9wOhBwdWTlf81qDAnCZS4ZmZ6v3yke_6VwFkeQ65tOI4jGsWmkXFu-G_R4-b_xXPl0BcZT4-FUuEsjWf-EFYkmi0zEBh9Smmeu9DYixNu9edhANRrQwmImi171eBYNYZ6RARjv9pf/s400/080421-0004.png)
そこで NSBezierPath#setShouldAntialias: を使い一時的にアンチエイリアスを切ってやる。
NSGraphicsContext *gc = [NSGraphicsContext currentContext];
[gc saveGraphicsState];
[gc setShouldAntialias:NO];
:
(線の描画)
:
[gc restoreGraphicsState];
するとくっきりした線が描ける。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1dvt0TmrUlDdDnNbsGxwiIyqOwOEBPFhH1FwqBqhju-aTppHZeqIicbdA5yT4PozoSV5PEhb6m68WKW1jmXKtLgKTMLi9f1H6kjr37Ot28pzzMxiwE2nhyphenhyphenr84M5sKD7vBr5ly1YTpldF8/s400/080421-0003.png)