記事一覧

スライダー画像のカスタマイズ

やっとツマミの方の画像をカスタマイズできたぞ!!!
NSSliderじゃなくてNSSliderCellの方をいじるわけですね。そして、単に setImage 的なものを呼ぶんじゃなくて drawKnob なるセレクタをオーバーライドしないといけない。さらに初心者にやさしくない bundle を絡めた画像指定。
・・・ハードル高杉!!!

/* MyGreatPlugin_CocoaView.h */

@interface MySliderCell : NSSliderCell
{
}
-(void)drawKnob:(NSRect)knobRect;

/* MyGreatPlugin_CocoaView.m */

@implementation MySliderCell

-(void) drawKnob:(NSRect)knobRect
{
NSBundle *bundle = [NSBundle bundleWithIdentifier : @"com.MyCompany.audiounit.MyGreatPlugin"];
NSString *path = [bundle pathForImageResource:@"MySliderKnobImage.png"];
NSImage* img = [[[NSImage alloc] initByReferencingFile:path] autorelease];
[[self controlView] lockFocus];
[img drawInRect:knobRect
fromRect:NSMakeRect(0,0,[img size].width,[img size].height)
operation:NSCompositeSourceOver
fraction:1.0];
[[self controlView] unlockFocus];
}

これを記述してセーブすると Interface Builder の方でスライダーセルのクラスとして MySliderCell が選択できるようになるので、それを選択するとやっとソースと.xibが結びつきます。

さて次は、knobRectの大きさの設定と、レールの方の画像設定だな・・・。