0

NSView のカスタム クラスにこれがあり、drawMyRec IBAction を使用してボタンを押すと、NSRect の色を変更したいのですが、これが機能しません。誰か助けてもらえますか?

#import "myView.h"

@implementation myView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        RectColor = [[NSColor blackColor] init];
    }

    return self;
}


- (IBAction)drawMyRec:(id)sender;
{
    NSLog(@"pressed");
    RectColor = [[NSColor blueColor] init];
    [self setNeedsDisplay:YES];
}


- (void)drawRect:(NSRect)dirtyRect
{
    NSRectFill(dirtyRect);
    [RectColor set];

}

@end
4

2 に答える 2

2

drawRect関数が正しくありません。これに変更:

- (void)drawRect:(NSRect)dirtyRect
{
    [RectColor set];
    NSRectFill(dirtyRect);

}
于 2012-03-18T20:16:43.267 に答える
2

まず、なぜ電話をかけ-initているのNSColorですか?次に、setrect を描画した後に色を変更しているため、次の再描画まで有効になりません。3番目、dirtyRectいつ-drawRect:呼ばれますか?何が汚れているかに関係なく、rect全体を埋めてみませんか?

于 2012-03-18T19:00:03.060 に答える