我发现这个在objective-c cocoa
中绘制一个矩形的例子NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];
但是,我应该在哪里指定 哪些 NSView在代码中绘制?
例如,如果我有两个NSView对象,并且我运行此代码,我该如何指定要绘制哪个?
答案 0 :(得分:3)
您不会在 NSView
上运行此代码,而是在中运行 NSView
子类覆盖{{1}方法。
您需要创建自己的-drawRect:
子类,然后在该子类中覆盖NSView
并将此代码放在那里:
-drawRect:
最后,您当然必须实例化@interface CustomView : NSView
@end
@implementation CustomView
- (void)drawRect:(NSRect)dirtyRect
{
NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];
}
@end
的实例并将其添加到您的视图层次结构中,就像通常使用常规CustomView
一样。
答案 1 :(得分:1)
子类drawRect:
,将您的代码添加到子类的NSView
方法中,并将相应的{{1}}替换为您的类的实例。