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

首先,你为什么要-init打电话NSColor?其次,您set在绘制矩形后会调整颜色,因此在下一次重绘之前它不会生效。3、什么dirtyRect时候-drawRect:叫?不管有什么脏东西,为什么不直接填充整个矩形?

于 2012-03-18T19:00:03.060 回答
2

你的drawRect函数不正确。改为:

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

}
于 2012-03-18T20:16:43.267 回答