ヒレガス本の20.7節のチャレンジ1。
- (id)init;
- (void)setShadowOffset:(NSSize)offset;
- (void)setShadowBlurRadius:(float)val;
- (void)setShadowColor:(NSColor *)color;
このヒントじゃ全然判りませんよ。
initがあるって事は、alloc してinitしろって事なんでしょうけど。
背景色と同じようにNSShadowクラスのインスタンスを生成してsetしなきゃだったなんて。
xcatsanさんの(旧)Cocoaの日々:NSShadowを読んで、ようやく納得しました。
- (void)drawStringCenteredIn:(NSRect)r
このメソッド内でdrawAtPoint:を送信してる箇所の前後にロジックを挿入。
[NSGraphicsContext saveGraphicsState];
NSShadow* shadow = [[NSShadow alloc] init];
[shadow setShadowOffset:NSMakeSize(10.0, -10.0)];
[shadow setShadowBlurRadius:3.0];
[shadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:0.3]];
[shadow set];[string drawAtPoint:strOrigin withAttributes:attributes]; // この行の前後に追加
[NSGraphicsContext restoreGraphicsState];
[shadow release];
こんな感じで表示できます。
後はパラメータをいじれるようにスライダー付けても面白いかも。