Geometry 関数
NSBundle
NSDictionary
NSFileManager
NSMutableAttributedString
NSNumber
NSScanner
NSString
NSTimer
Graphic 関数
NSApplication
NSBezierPath
NSCell
NSColor
NSCursor
NSCustomImageRep
-NSImage の描画ルーチンを設定する
NSDocument
NSDocumentController
NSDragging
NSEvent
NSFontManager
NSGraphicsContext
NSImage
NSMenu
NSOutlineView
NSPanel
NSPopUpButton
NSResponder
NSScrollView
NSString 追加
NSTableColumn
NSTableView
NSTextStorage
NSTextView
NSToolbar
NSView
NSWindow
NSWorkspace
その他
.nib ウィンドウ
Views パレット
クラス
インスタンス変数
メソッド
CFXML
Carbon Event
Carbon Graphics
Cocoa で日本語
メソッド
その他

- Application Kit-
NSCustomImageRep

Application Kit - NSCustomImageRep
NSImage の描画ルーチンを設定する
Keywords: storkeLineFromPoint

Cocoa で画像を扱うときは、NSImage を使うでしょ。NSImage は、その内容をあらわす NSImageRep をいくつか持っている。NSImageRep には、ビットマップをあらわす NSBitmapImageRep とか、PDF をあらわす NSPDFImageRep とかがあるんだ。じゃあ、たとえばベジェで描くのを NSImageRep としたいときとかは?

そういうときに使えるのが NSCustomImageRep だ。このクラスを使えば、NSImageRep の描画ルーチンを自分で設定できるんだ。

Application Kit/NSCustomImageRep.h
- (id)initWithDrawSelector:(SEL)aMethod delegate:(id)anObject;

これを使うと、自前の描画ルーチンを設定できる。NSImage が画像の表示が必要になると、ここで設定したセレクタを呼び出すんだ。そのときに、好きな絵を描いてやればいい。

(sample)
- (id)initWithFrame:(NSRect)frame
{
    NSImage* image;
    NSCustomImageRep* customRep;
    
    self = [super initWithFrame:frame];
    if(self) {
        image = [[NSImage alloc] initWithSize:rect.size];
        customRep = [[NSCustomImageRep alloc] 
            initWithSelector:@selector(drawImage:) delegate:self];
        [image addRepresentation:customRep];
        [customRep release];
    }
    return self;
}

- (void)drawImage:(NSCustomImageRep*)customRep
{
    // 独自の描画処理
}

このサンプルでは、まず NSImage のインスタンスを作る。そして、その representation として、NSCustomImageRep を指定してるんだ。 NSCustomImageRep は、selector として self の drawImage: を指定している。

image が描かれるとき、drawImage: が呼び出されるんだ。この中で好きな図形を描いてくれ。



[Home] [Download] [Archives] [BBS] [Cocoa Programming Tips 1001] [Core Foundation の秘密] [Safari Developer Center] [はじめてのブラウザのつくり方] [Sketch BP] [スクリーンセイバーを作ろう] [Objective-C 最適化] [Authorization API 完全理解] [Mac OS X Programming Books Review] [オブジェクト指向の言語比較論] [panther-dev]

mailto: mkino@xd5.so-net.ne.jp