Pregunta

Estoy intentando codificar un generador de diagrama de flujo para un lenguaje que usa Ruby.

Quería saber si había bibliotecas que pudiera usar para dibujar varias formas para los distintos elementos del diagrama de flujo y escribir texto en esas formas.

Realmente preferiría no tener que escribir código para dibujar formas básicas, si puedo evitarlo.

¿Alguien podría indicarme alguna documentación de referencia con ejemplos del uso de esa biblioteca?

¿Fue útil?

Solución

La respuesta simple es que (en el momento de escribir este artículo) es casi seguro que lo que desea no existía.¡Lo siento!

Si utiliza Windows, buscaría un producto en el espacio .NET, donde espero que encuentre algo.Probablemente tendrás que pagar dinero real.Supongo que, si eres valiente, podrás hablar con él usando IronRuby.

Desde un entorno que no sea MS, esperaría una solución basada en Java.Como ya se mencionó, dentro del mundo Web, usted esperará algo basado en JavaScript, o probablemente más probablemente, algo del mundo Flash (¿o tal vez incluso Silverlight?).

En realidad, si desea permanecer en Ruby y no le importa correr riesgos, Silverlight podría ser un camino a seguir, suponiendo que el DLR realmente funcione (no hay experiencia aquí).Ruby, por mucho que me guste, no tiene la estructura GUI más madura a su alrededor.

Actualizar:Desde que escribí esto (hace aproximadamente 5 años), la situación ha mejorado, un poco.Si bien todavía no conozco ninguna biblioteca de dibujo de gráficos de Ruby específica, hay soporte mejorado para Grafiz aquí (Github) o por gem install ruby-graphviz.Descubrí que para gráficos simples, es muy posible escribir el script directamente desde Ruby.

Otros consejos

Escriba su diagrama de flujo como un gráfico dirigido o no dirigido en Grafiz.Graphviz tiene un lenguaje, punto eso facilita la generación de gráficos.Simplemente genere el archivo de puntos, ejecútelo a través de Graphiviz y obtendrá su imagen.

graph {
  A -- B -- C;
  B -- D;
  C -- D [constraint=false];
}

se representa como
undirected

digraph {
  A [label="start"];
  B [label="eat"];
  C [label="drink"];
  D [label="be merry"];

  A -> B -> C;
  C -> D [constraint=false];
  B -> D [ arrowhead=none, arrowtail=normal]; // reverse this edge
}

se representa como
directed

Puedes controlar las formas de los nodos y mucho más en Graphviz.

Parece que estará limitado principalmente por las capacidades de cualquier agente de usuario para el que esté creando;Si se trata de un proyecto web, las capacidades de dibujo dependerán del navegador.Dado que Ruby se ejecuta en el lado del servidor, como mínimo necesitaría algo de JavaScript para permitir arrastrar/hacer zoom, etc.Hay muchos ejemplos de uso de JavaScript para dibujo vectorial (solo busque en Google "biblioteca de gráficos javascript"), pero todos requieren codificación y no he visto ninguna biblioteca que resuma esto de manera elegante.

ImageMagick tiene un enlace Ruby llamado RMagick (a veces conocido con otros nombres, según el repositorio).(Enlace) No lo he usado yo mismo, pero creo que hará lo que estás buscando.Necesitará hacer algo de codificación, pero está en la línea de

draw.rectangle(x1, y1, x2, y2)
draw.polygon(x1, y1,...,xN, yN)

Estoy totalmente seguro, pero mira las fijaciones de El Cairo para Ruby.Pango para texto.Estoy investigando y encontré esta página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top