ページ

2008年4月19日土曜日

RubberBand(その4)枠を描く

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

まずは枠を描いてみる。



サンプル: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);
}


- - - -
描画は簡単にできた。次はマウスイベント処理を実装する。