在NSView中自定义绘制而不删除以前的背景

时间:2012-01-04 13:12:15

标签: macos quartz-graphics nsview

我试图使用Quartz函数在我的自定义视图上动态绘制几个点,以便我得到一个完整的图形。我处理自定义视图的drawRect方法内的线条绘制,我获取当前上下文并绘制线条。但是,当我尝试画一条新线时,它们会被抹去。我希望这些线条也可以与新绘制的线条一起显示。请让我知道如何做到这一点。我无法将所有点存储在一起并在最后绘制。我想不断更新我的观点。提前谢谢。

2 个答案:

答案 0 :(得分:1)

在自定义视图中添加方法:

- (BOOL) isOpaque { return YES; }

这样可以防止在您的背后绘制任何观点,包括背景。

但请注意,在调整大小时,您需要以任何方式重绘所有内容。更合适的解决方案是使用屏幕外图像来代替。

答案 1 :(得分:0)

您可以使用CALayers:每次有新数据时都会向根添加一个新子图层,并绘制到该图层。您的绘图代码可以保持不变:您只需要输入代码来创建和使用图层,这实际上非常简单 请参阅:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514