首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可编辑NSBezierPath

可可编辑NSBezierPath
EN

Stack Overflow用户
提问于 2014-12-31 10:08:48
回答 2查看 118关注 0票数 0

我有一个简单的bezierPath,NSView中有两个元素;我想修改按钮上的最后一个元素(NSPoint),但是我的代码在路径上没有任何视觉效果。下面是我在NSView子类中的代码:

代码语言:javascript
复制
    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
   }

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-31 10:22:07

每次调用drawRect:时,您都要创建一个新路径并绘制它。然后,按下按钮修改路径。

所以你有两个问题:

  1. 继续重新创建路径--在创建视图时只创建一次。
  2. 更新路径时不要重绘视图--使用setNeedsDisplay
票数 1
EN

Stack Overflow用户

发布于 2014-12-31 10:22:26

每次都要通过-drawRect:方法重新创建Bezier路径。所以,不重要的是,你保留最后一个,并修改它。您将放弃该操作,并在下次视图绘制时创建一个新的视图。

此外,如果您的变量确实是在大括号之外声明的({…)}),那么它不是一个实例变量。它只是一个文件范围的全局变量。这意味着它被这个视图类的所有实例所共享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27719545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档