2010-05-17 15 views
10

Necesito visualizar un gráfico de this kind. No sé cómo nombrarlo (por cierto, si lo sabes, lo agradeceré si me lo dices). Sería ideal para hacer clic en los elementos del gráfico (para que cuando el usuario haga clic en un bloque, pueda manejar un evento con el ID del elemento especificado), pero puedo sobrevivir incluso sin interactividad. Me gustaría poder enfocarme en un nodo en particular y diseñar todos los demás para ver desde su perspectiva. ¿Hay algún componente disponible que sea bueno para esta tarea? En caso negativo, ¿qué debería buscar para ayudarme a desarrollar un algoritmo para dibujar dicho gráfico con un diseño visualmente cómodo?¿Cómo visualizo un gráfico complejo en .Net?

La naturaleza práctica de este gráfico es bastante común: cada bloque representa una derivación de 2 operandos. Los círculos anaranjados son referencias a 2 operandos, los círculos verdes son puntos de conexión para los consumidores. Puede ser significativo distinguir una posición de operando (izquierda o derecha), por ejemplo, si una derivación representa una operación matemática de diferencia o división (en este caso particular, un bloque puede ser triangular, pero en otros casos un operando puede hacer uso de teniendo en cuenta para qué bloques es un operando izquierdo y para qué bloques es un derecho). Otra aplicación común es la intersección de conjuntos con relaciones complejas.

Respuesta

6

Podrías echar un vistazo a Graph#, pero no estoy seguro de qué tan bien manejará nodos compuestos como ese. Sin embargo, podría ser un buen punto de partida.

2

Bueno, primero debe representarlo de alguna manera en la memoria, hay muchas maneras, como adjacency list. Entonces necesitas dibujarlo. Si bien, en general, dibujar un gráfico es simple, no es tan simple si necesita layout it. Parece que en tu caso, eso es exactamente lo que tienes que hacer para llegar a esa buena representación. No va a ser fácil.

EDITAR: Interesante, parece haber un library hecho por Microsoft Research.

2

No sé lo útil que será en este escenario particular, pero puede que desee echar un vistazo a http://quickgraph.codeplex.com/

+0

actualización: http: //quickgraph.codeplex.com/ – bob

+1

@bob cheers, actualicé la URL – ICR

1

no puedo encontrar este componente y decidí writen mi propio control, la línea y la cabeza , y los utilizan para la visualización de mi gráfica Si el su necesario que puedo dar es componente y el programa le demostrará/ I writen componente y el programa de visual Studio 2008 lenguaje C#

+0

Muchas gracias, Andriy. Estaré encantado de intentar aplicar y/o extender (devolviéndole mis extensiones, por supuesto) su solución. Envíelo a [email protected] (lo siento por una dirección aterradora, es real mientras temporal, solo copie como está; desafortunadamente no encontré ningún sistema de mensajería privado en este sitio ni sus contactos en su perfil mientras evito publicación de mi correo electrónico en páginas web públicas) – Ivan

2

también me gustaría señalarle a graphviz. No es una solución .NET pero puede alimentar archivos que son lo suficientemente fáciles de escribir para obtener gráficos. No creo que el mapeo sea algo muy simple, especialmente con el aumento del número de nodos, por lo que debería ser una buena herramienta encontrarlo.

+0

Existen enlaces para llamar a graphviz desde C#. Todos me parecen un poco experimentales. –

1

Una muy buena pinta es la herramienta Diagrama de Nevron. ¡Pero es not for free!

Actualmente estoy usando los gráficos y las interfaces de usuario de ellos y funcionan bastante bien.

1

Graphviz4Net proporciona el componente WPF para la visualización de gráficos. Depende de GraphViz (herramienta de visualización de gráficos de línea de comando de código abierto).

0

han utilizado este producto comercial con éxito: GoDiagram

Soporta los múltiples puertos en los nodos como usted ha demostrado.

Cuestiones relacionadas