我在NSView中有一个带有2个元素的简单bezierPath; 我想在按下的按钮上修改最后一个元素(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
}
任何建议?
答案 0 :(得分:1)
每次拨打drawRect:
时,您都会创建一条新路径并进行绘制。然后,按下按钮,修改路径。
所以你有两个问题:
setNeedsDisplay
答案 1 :(得分:0)
每次通过-drawRect:
方法重新创建Bezier路径。因此,保留最后一个并修改它并不重要。您将在下次查看视图时丢弃该文件并创建一个新文件。
此外,如果您的变量实际上只是在任何花括号({
... }
)之外声明,那么它不是实例变量。它只是一个文件范围的全局变量。这意味着它由此视图类的所有实例共享。