因此,我收到一條通知,提供我需要繪製路徑的數據。此代碼來自我的主應用程序控制器:爲什麼我的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];'。最後,您需要爲貝塞爾路徑設置顏色。 –