andrew
andrew

Reputation: 272

Custom Draw in NSView without erasing the previous background

I am trying to plot few points dynamically on my Custom View using Quartz functions so that i get a complete graph. I handle drawing of lines inside the drawRect method of Custom View where I get the current context and draw the lines. But, they get erased when i try to draw a new line. I want to have those lines also visible along with the new ones drawn. Please let me know how to do this. I can't store all the points together and draw at the end. I want to continously update my view. Thanks in advance.

Upvotes: 0

Views: 600

Answers (2)

pickwick
pickwick

Reputation: 3154

You could use CALayers: add a new child layer to the root each time you have new data, and draw to that layer. Your drawing code can remain the same: you just need to put in the code for creating and using layers, which is actually pretty easy.
See: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514

Upvotes: 0

Simon Urbanek
Simon Urbanek

Reputation: 13932

Add a method to your custom view:

- (BOOL) isOpaque { return YES; }

That will prevent the drawing of any views behind yours including the background.

Note, however, that on resize you'll need to redraw everything either way. A more proper solution would be to use off-screen image to draw into instead.

Upvotes: 1

Related Questions