How do I build a diagramming application in .NET? - c#

I want to write a GUI seating application that allows users to draw and annotate simple "maps" of seating areas.
The end result would probably look something a little like Visio, but specifically for manipulating my "seating" data model rather than producing files.
In Java-land, there's the Graphical Editing Framework (GEF) -- is there anything like this in the .NET space? Should I just use System.Drawing.Drawing2D primitives and handle it all myself?

Here is product from Nevron. It is paid but doing it all yourself will take lot of time and effort.
Open Diagram and EasyDiagram.net are available at Codeplex. Be sure to download and look into their code.

There is Netron Library for diagramming. It is open source and uses GDI+.

Check out NShape. It is an open source diagramming framework written in C# and quite powerful. Its controls are WinForms controls but you can also use it for WPF.

You might consider using the DSL Toolkit from the Visual Studio SDK. It allows you to create a graphical DSL designer by first creating a domain model, and then creating the graphical notation that will allow users to create or edit instances of that model.
You may very well be able to create a graphical notation that looks like a seating area. This would allow your users to not only "diagram", but to produce a file containing a filled-in domain model of what was diagrammed.

Check out our MetaDraw component - www.MetaDraw.com
MetaDraw is designed to make applications like this easy.
MetaDraw will support a background image and an annotation layer
You can put users into a variety of editing modes - Lines, Curves, Text, Shapes, etc.
Every drawn element is distinct - just like in Visio, so you can allow users to select objects and move them around or resize them. Every object can have multiple hidden tags ( like seat numbers or database record pointers ). You can recognize which objects users select ( for instance take some action when user clicks seat 22 ) . You can dynamically modify propertie by code - such as searching for seat 22 and changing it's fill color. Of course you can also scroll, zoom, print, save to a variety of formats and more.

Related

Need to have an visualizer to show information from a file

I am scanning a log file, the log file contains different component, component contain sub component & the sub component contains sub-sub component. There is parent child relationship with 3 levels.
The log files can be many and log file size goes round about 7MB.
Currently I am using nodeXL to represent the data in a graphical representation format.
For accomplishing this task, i am using C# Windows application with nodeXL.However I am not that satisfied with view & graphical display results of nodeXL for this case.
Need to have an attractive graphical display of the information I have.
Can anyone suggest any plugin tool or other way to accomplish this task.
Thanks in advance
Note: I am not sure the #tag to put in for this question. Pls edit the #tag section as you find out appropriate.
You could use GraphViz. I used it in a couple of projects now, mostly for debugging purposes. The format, in which you have to specify your graphs is really simple to write/generate. Furthermore you can modify the style of your nodes and edges as you like. The gallery on the provided website gives some examples. (google images for "graphviz examples" and you will see whats possible)

Manipulate-able data table

I have requirements to implement a UI using c# where the user can manipulate what data they want to appear on a document. The data should enter the program via SQL (prefer not using Table Adapters as the database is then hardcoded into the program, but will use it if absolutely necessary).
The following UI will appear when the user chooses to enter a database table:
https://docs.google.com/file/d/0B6b_N7sDgjmvcUt2amxNaXpJRFU/edit?usp=sharing
https://docs.google.com/file/d/0B6b_N7sDgjmvdUhmMUJFbEdKeVk/edit?usp=sharing
https://docs.google.com/file/d/0B6b_N7sDgjmvM3BSWDEyM0ROOFE/edit?usp=sharing
The user should be able to choose what columns (from all tables,
connections should be made using PK/FK.) they want to add to the
table, and sort and move that data.
The control should then able to generate the sql used to pull that
information from the database (or even pass the database back to the
main program, but prefer SQL)
I've seen this UI in many programs and would like to think there is a library out there that will save me the trouble of making this UI from scratch.
Are there any libraries available for C# that has this kind of functionality?
Telerik's Rad Grid will give you all of the functionality in terms of context menus and column reordering. You wont be able to output the code needed to regenerate the table however. You can export data directly from the grid using the column ordering specified in a range of formats (pdf, word, excel, etc.).
The Rad Grid is also not free, it is part of a suite of controls.
You may also try DevExpress. We use this control library for editing operations. It is not free but worth its price.

How to write to word document (in a particular format ) From C# windows forms application

I am developing a C# windows application , which captures the user's inputs(in the form of numerous textboxes, radio buttons and drop downs).
I need to write the captured response from User to a word document which fits in the word document which has a predefined template.
Could some one let me know the best way to approach that?
Thanks in advance,
Vijay
Depending upon how complex your needs are and the depth of your pockets there is a great product called Aspose.Words. We use their suite of products for generating office documents at work and they're really easy to work with. It's unfortunately a pretty expensive product so unless you are very committed to your product it might not be right for you.
Otherwise you might want to check out Microsoft's Open XML SDK.
[I have no affiliation with the company, aside from having used their products.]

Document Layout for Reports sent to End-Users

I'm pretty new to C# and .NET - I'm in the process of redesigning an outdated Excel/VBA-based quoting & inventory system. Most of the UI and backend is built already.
The problem is that I'm struggling to figure out how best to create and print the documents that will be sent to clients - namely the quotations themselves.
So, my question is thus: what would you recommend as something easy for a newbie to get to grips with to create documents that look something like the one I've included here? Our budget is practically zero (just to make things harder!) I've tried a few free controls floating around on the net but none of them seem to be particularly easy to use (no wysiwyg editor) or they crash (even embedding an excel sheet into the form seems to crash the IDE)
Note that these documents can sometimes spill over to 2 pages or more depending on the hire in question, and we want 'neat' page breaks (i.e. with a footer at the bottom, not looking like it's just been chopped off).
The documents will be output to either a PDF, a printer, or in rare cases HTML (although it's not the end of the world if HTML isn't possible)
Incidentally due to the aforementioned lack of budget, I'm on C# Express 2010, so anything that comes bundled with full VS is probably not going to work unless it's supported by Express.
EDIT: Can't post images as a newbie...basically it's a document with a watermark, address at top left corner, some details in the middle at the top, logo top right, then under that a full-width table of items and associated prices. Then at the bottom a bit of sales spiel, a signature, and a footer. So it's kinda like a 3 x grid with a footer, with a grid nested inside that for the prices etc. Formatted nicely (coloured text in a nice font, rounded corners for headings, nicely spaced out etc etc...)
You don't say if you're building a desktop or web based app, but I'll assume that it's a web app.
One option you might want to consider is saving the parts of your template as an .rtf file, and then assembling the final document based on the different parts. rtf is a text-based format, so you can do string substitutions, etc on it.
I do this kind of work a couple of times per year, and I use Crystal Reports with a C# host. I had a question about controlling parameters and creating multiple files that might be helpful:
Crystal Reports "File Break"
Creating the actual Crystal Report was pretty simple, though we don't generally do anything particularly fancy. It ain't free, but it's a good tool and it will get this job done.
I have found success using SSRS(SQL Server Reporting Services) reports, especially if the data is being stored in a database. You can still use the reports and display/print them from the VS Report viewer in Winforms/WPF. Although I am not sure about designer support in VS Express.

Do you know of a free .Net component for visual flow model graph design and editing?

An app (C#4, WinForms, Entity Framework, SQL Server 2008) of mine maintains a graph of interconnected objects, each having some simple member fields and a set of many directed (in and out) one-to-one links to other objects.
I'd like to offer a user an ability to view and edit this graph visually some way, creating and removing connections, modifying objects attributes values and introducing/dropping objects.
I suppose there has to be a framework (at list a primitive kind of) for this as visual model design tools are pretty common to meet. Do you know one?
A few years ago I collaborated with a project that used this kind of tool to build parsing software for education. The tool that was used was Graphviz, in special dot and dotty. If you don't know what is it, then this is a short description about it:
Graphviz is open source graph
visualization software. It has several
main graph layout programs.
The Graphviz layout programs take
descriptions of graphs in a simple
text language, and make diagrams in
several useful formats such as images
and SVG for web pages, Postscript for
inclusion in PDF or other documents;
or display in an interactive graph
browser. (Graphviz also supports GXL,
an XML dialect.)
Graphviz has many useful features for
concrete diagrams, such as options for
colors, fonts, tabular node layouts,
line styles, hyperlinks, and custom
shapes.
This is an example of the kind of graphs that were built:
(source: ucse.edu.ar)
You should note that this is not a native .NET tool, but of course, you can use it anyway.
This answer might come a little late, but Microsoft has its own .Net library called Microsoft Automated Graph Layout (MSAGL) which looks (at least visually) suspiciously similar to GraphViz, or, DOT in particular. Its name has changed over time as it has been developed in MS Labs/MS Research.
According to the product page, it contains three modules:
Graphing module Microsoft.MSAGL.dll,
Drawing module Microsoft.MSAGL.Drawing.dll, and
Viewer control Microsoft.MSAGL.GraphViewerGDIGraph.dll that seems to be a Windows Forms custom control.
This software used to be free a long time ago, but, unfortunately, it has made it into a paid product.

Categories

Resources