我有一个简单的bezierPath,NSView中有两个元素;我想修改按钮上的最后一个元素(NSPoint),但是我的代码在路径上没有任何视觉效果。下面是我在NSView子类中的代码:
NSBezierPath *path;
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
path = [NSBezierPath bezierPath];
[path moveToPoint:NSMakePoint(0, 0)];
[path lineToPoint:NSMakePoint(60, 60)];
[path setLineWith:2.0];
[[NSColor redColor] set];
[path stroke];
//the path is correctly drawing and visible
}
- (IBAction)buttonPressed:(id)sender {
NSPoint newPoint = NSMakePoint(120, 120);
[path setAssociatedPoints:&newPoint atIndex:1]; //has no visible effect
}有什么建议吗?
发布于 2014-12-31 10:22:07
每次调用drawRect:时,您都要创建一个新路径并绘制它。然后,按下按钮修改路径。
所以你有两个问题:
setNeedsDisplay发布于 2014-12-31 10:22:26
每次都要通过-drawRect:方法重新创建Bezier路径。所以,不重要的是,你保留最后一个,并修改它。您将放弃该操作,并在下次视图绘制时创建一个新的视图。
此外,如果您的变量确实是在大括号之外声明的({…)}),那么它不是一个实例变量。它只是一个文件范围的全局变量。这意味着它被这个视图类的所有实例所共享。
https://stackoverflow.com/questions/27719545
复制相似问题