まずは枠を描いてみる。
サンプル:RubberBand-1.zip
カスタムビュー RubberBandView を用意して、ここに RubberBandを描く。
描く領域をインスタンス変数で保持する。
@interface RubberBandView : NSView {
NSRect _rect;
}
後は drawRect: で描くだけ。
- (void)drawRect:(NSRect)rect {
// Drawing code here.
[[NSColor whiteColor] set];
NSRectFill(rect);
[[NSColor grayColor] set];
NSFrameRectWithWidth(_rect, 0.5);
[self drawKnobs];
}
枠線を描いたら、drawKnobs で上下左右四隅にノブ(四角)を描く。Sketchを真似てみた。
- (void)drawKnobs
{
[self drawKnobAtPoint:NSMakePoint(NSMinX(_rect), NSMinY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMidX(_rect), NSMinY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMaxX(_rect), NSMinY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMinX(_rect), NSMidY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMaxX(_rect), NSMidY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMinX(_rect), NSMaxY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMidX(_rect), NSMaxY(_rect))];
[self drawKnobAtPoint:NSMakePoint(NSMaxX(_rect), NSMaxY(_rect))];
}
- (void)drawKnobAtPoint:(NSPoint)p
{
NSRect knob_box = NSMakeRect(p.x-KNOB_WIDTH/2.0, p.y-KNOB_WIDTH/2.0, KNOB_WIDTH, KNOB_WIDTH);
[[NSColor whiteColor] set];
NSRectFill(knob_box);
[[NSColor blackColor] set];
NSFrameRectWithWidth(knob_box, 0.5);
}
- - - -
描画は簡単にできた。次はマウスイベント処理を実装する。