因此,我收到一条通知,提供我需要绘制路径的数据。此代码来自我的主应用程序控制器:为什么我的NSBezierPath没有显示?
-(void) handleAdd:(NSNotification *)aNotification{
NSLog(@"x1:%f y1:%f x2:%f y2:%f ",[panelController x1],[panelController y1],[panelController x2],[panelController y2]);
myPath = [[NSBezierPath alloc]init];
[myPath setLineWidth:[panelController grosor]];
[myPath moveToPoint:NSMakePoint([panelController x1],[panelController y1])];
[myPath lineToPoint:NSMakePoint([panelController x2],[panelController y2])];
[[panelController trazado] setStroke];
[myPath stroke];
}
NSLog向我显示正确的数据。我创建了一个视图,并在那个白色的矩形是我想绘制的地方。
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
NSRect bounds= [self bounds];
[[NSColor whiteColor] set];
[NSBezierPath fillRect:bounds];
}
如果我在该类中绘制中风显示,但我怎么能从控制器上绘制该视图?还是应该在视图中收到通知并从该类中抽取通知?
所有绘图必须发生在'-drawRect:'内部。因此,在'-handleAdd:'存储数据并将视图标记为needeing display:'[myView setNeedsDisplay:YES];'。最后,您需要为贝塞尔路径设置颜色。 –