Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6854405
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T01:37:45+00:00 2026-05-27T01:37:45+00:00

I need to draw a large, interactive tree structure in C# WinForms – a

  • 0

I need to draw a large, interactive tree structure in C# WinForms – a corporate hierarchy.

Aside from the algorithm which will arrange the blocks in the tree which is probably going to be quite complex, I’m not really sure about how to go about implementing the actual canvas and drawing code.

At first glance, I could create a giant Image (or a matrix of largeish images), and use a Graphics or BufferedGraphics to render a small region given where the user is zoomed into. This would give the zooming and panning effect you might see on Google Maps.

As for interactivity, what can be done here? I’d like the user to be able to highlight certain people (people in a particular cost centre, people who are contractors, etc…). Also, it would be pretty cool if the tree showed progressively more information about the staff as the user is zoomed in more. Should I just be doing hit testing with the MouseMove event and programatically add/remove/alter the things which make up the picture on the canvas?

Is this something that I should avoid using GDI for and maybe using DirectDraw instead? I don’t want to go overkill – I just want to be able to visually represent the structure and give users the option to print it.

Alternatively, is there a (freeware?) library available which allows zooming and panning with interactivity? I might be asking a bit much, but maybe one which also can handle tree structures?

I have experience with each individual concept on a smaller scale, however nothing brought together in a largeish structure like this. I predict that if I do something wrong, it can turn into something very slow, laggy, and memory-hogging.

I’ve only dabbled in WPF. I almost exclusively use WinForms in .Net – is there something in WPF which would make this task significantly easier?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T01:37:46+00:00Added an answer on May 27, 2026 at 1:37 am

    I don’t know if this even is an answer, but I do a lot of interactive graphical work using GDI+ and I feel that I can work very effectivly with it. Both when it comes to tree structures exacly as the one you describe as well as versatile layout editors and over to browsing photos etc.

    What you do not want is painting everything on a large bitmap. Avoid large bitmaps. 🙂

    So either you use double buffered graphics as provided by the framework or you design it on you own. This may not be perfect if you want to run your app remotely, however: http://blogs.msdn.com/b/oldnewthing/archive/2006/01/03/508694.aspx

    Basically you just put everything you want to draw in a list and update it with inforamtion on exactly where it ended you on screen so that you can hit-test for it in OnMouseDown/OnMouseMove/OnMouseUp. You’ll soon notice the need for keeping an enum for which state the interaction is in (eg.g DraggingObject, MakingSelection, Scrolling etc) and a Point _lastMousePosition.

    The logic is pretty simple. Making it flicker-free and responsive may not be that simple.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to draw a corporate structure tree (sort-of like a family tree) in
I am making a small JFrame in which I draw a large triangle. On
In my application I need to draw a large network (basically, little boxes connected
I need to draw some simple network topology charts, suggestions of some good tools
I need to draw peak meters for audio in realtime. Minimum 44100 samples per
I need to draw on a TPanel, ideally directly so I don't have another
I need to draw text onto a window HDC along a circular path using
I need to draw a .png image on an UIView. I have no clue
I need to draw a UILabel striked through. Therefore I subclassed UILabel and implemented
I need to draw a line one inch long on any device given a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.