Recommendations for graphical application

C

CraigH

Hi,

I am at the early stages of defining the technology requirements for a
graphical, 2D Windows Forms application with display features along the
lines
of MS Visio. It has a requirement to display it's data in a number of tree
or
network like formations.

The "workspace" will take up the bulk of the UI space and must be able to
cope with large numbers of objects, connector lines, pictures, etc and allow
the user to scroll, zoom, drag and drop, select objects within their work
area. The number of objects that it needs to cater for runs into the
thousands. The same information then must be able to be transferred to
printed documents and various other image formats.

What graphics technology would people recommend to implement a system such
as this on .NET Framework 2.0?

I have investigated using GDI+ (although via Framework 1.1) but have found
that performance is too slow with large (virtual) workspaces, large numbers
of objects and zooming/scrolling/panning.

Due to this, I've started looking into the Managed DirectX extensions but
most of the information I have found relates to games development rather
than
traditional Office like diagramming tools hosted in Windows Forms
application.

Any help/thoughts/ideas on technologies or implementation approaches to
improve performance would be greatly appreciated.

Thanks,

Craig
 
T

TerryFei

Hi Craig,
Welcome to MSDN Newsgroup!

Based on my experience,GDI+ performance problems are usually caused by
using GDI+ incorrectly or thinking that it will magically solve your
problems for you.
A combination of smart invalidation, efficient paint clipping and possibly
double-buffering will likely give all the performance you need for a
Visio-style application.

You also could do this kind of thing in DirectX. (This might get you
started http://www.ircomm.net/blogs/mykre/archive/2005/05/24/339.aspx)

It's non-trivial to implement this kind of a design surface in GDI+ but
it's not any easier in DirectX (certainly if a goal is to enable printing,
there are a lot more parallels using GDI+ than DirecX). If I were
implementing this, I would prefer to GDI+

I hope the above information is helpful for you. Thanks and have a nice day!

Best Regards,

Terry Fei [MSFT]
Microsoft Community Support
Get Secure! www.microsoft.com/security


--------------------
 
N

NetronProject

As Tim Scott metnioned, the Netron graph library has all the stuff you
need. You will have to tweak things however since dealing with many
nodes (thousands and millions) is somewhat perpendicular to all the
features you mention. It's difficult to have both a lot of Visio-like
features and scalability into the thousands.

There are however packages which are tailored for very large graphs,
especially in the Java world (see e.g. the superb Prefuse project on
Sourceforge). You could try to learn from these and eventually
transpose the code to C#...which is not an easy thing, beleive me.

Concerning Net2, I am working on a totally new version which will be
released in the Summer of 2006. The new graph library will have all the
Visio features you expect (except maybe stuff like VBA macros and
alike).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top