objective-c如何指定在哪个NSView上绘制?
How to specify which NSView to draw on in objective-c?
我在 objective-c cocoa
中找到了这个绘制矩形的示例
NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];
但是,我应该在哪里指定which NSView 在代码中绘制?
例如,如果我有两个 NSView 对象,并且我 运行 这段代码,我如何指定在哪一个上绘制?
Subclass NSView
,将您的代码添加到 subclass 的 drawRect:
方法中,并用实例替换适当的 NSView
你的 class.
您不 运行 此代码 在 和 NSView
上,而是 运行s 在 NSView
子类对 -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
的实例并将其添加到您的视图层次结构中,就像您通常对常规 NSView
.
所做的那样
我在 objective-c cocoa
中找到了这个绘制矩形的示例NSRect r = NSMakeRect(10, 10, 50, 60);
NSBezierPath *bp = [NSBezierPath bezierPathWithRect:r];
NSColor *color = [NSColor blueColor];
[color set];
[bp stroke];
但是,我应该在哪里指定which NSView 在代码中绘制?
例如,如果我有两个 NSView 对象,并且我 运行 这段代码,我如何指定在哪一个上绘制?
Subclass NSView
,将您的代码添加到 subclass 的 drawRect:
方法中,并用实例替换适当的 NSView
你的 class.
您不 运行 此代码 在 和 NSView
上,而是 运行s 在 NSView
子类对 -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
的实例并将其添加到您的视图层次结构中,就像您通常对常规 NSView
.