Scrollbars and big picture

Discussion in 'Mac Programming' started by chumchum, Nov 11, 2010.

  1. chumchum macrumors newbie

    Nov 11, 2010
    Hi everyone,

    I am writing an application that displays a large graph. When I use an NSScrollView the application slows down as the graph is quite big and therefore slow to draw on a subclass of NSView. Instead I would like to draw only the part of the graph that is visible (the size of the window) but I would still need scrollbars to choose what part of the graph is supposed to be drawn. Does any body as any suggestions about how to implement this as I am new to cocoa. Should I subclass an NSScrollView, or use NSSlider (although they are not very nice)?

  2. robbieduncan Moderator emeritus


    Jul 24, 2002
    Use an NSScrollView and only draw the correct portion of the content view as it's requested.
  3. chumchum thread starter macrumors newbie

    Nov 11, 2010

    Thanks for the reply but do you have any suggestions on how to extend NSScrollView?

  4. chown33 macrumors 604

    Aug 9, 2009
    Sailing beyond the sunset
    There is no reason to subclass NSScrollView. Doing so won't solve anything.

    If the problem is your BigGraphView, then nothing done by NSScrollView can make BigGraphView draw less. The problem lies in BigGraphView. You wrote:
    Well why are you drawing parts that aren't visible? And why would you think that NSScrollView could make your class draw less?

    If you're drawing parts that lie outside the visible part of your view, then stop drawing those parts. You should only draw the parts that lie inside the bounds rect of your document view, which will be set by the content view of the NSScrollView.

    If your view is drawing invisible parts, then nothing NSScrollView can do will cause your view to draw less. You have to change how your view draws. When you do that, then NSScrollView will be faster.

    If that doesn't make sense, then you don't understand how NSScrollView works. Review the reference doc:

    From that reference doc:
    The content view is responsible for managing the position of the document view, clipping the document view to the content view's frame, and handling the details of scrolling in an efficient manner. The content view scrolls the document view by altering its bounds rectangle, which determines where the document view’s frame lies.
  5. gnasher729 macrumors P6


    Nov 25, 2005
    You'd hope that drawRect: had some parameter telling the view which bits need to be redrawn. Wait a second...

Share This Page