Domanda

Sto cercando di codificare un generatore di diagrammi di flusso per una lingua utilizzando Ruby.

Volevo sapere se esistevano librerie che potevo utilizzare per disegnare varie forme per i vari elementi del diagramma di flusso e scrivere testo su quelle forme.

Preferirei davvero non dover scrivere codice per disegnare forme di base, se posso aiutarlo.

Qualcuno può indicarmi qualche documentazione di riferimento con esempi di utilizzo di quella libreria?

È stato utile?

Soluzione

La risposta semplice è che (al momento in cui scrivo) ciò che desideri quasi certamente non esisteva.Scusa!

Se utilizzi Windows, cercherò un prodotto nello spazio .NET, dove mi aspetto che troverai qualcosa.Probabilmente dovrai pagare soldi veri però.Suppongo che, se sei coraggioso, potresti riuscire a parlargli usando IronRuby.

Da un ambiente non MS spero in una soluzione basata su Java.Come già accennato, nel mondo del Web, spererai in qualcosa basato su JavaScript o, probabilmente, più probabilmente, qualcosa dal mondo Flash (o forse anche Silverlight?).

In realtà, se vuoi rimanere in Ruby e non preoccuparti di qualche rischio, Silverlight potrebbe essere una strada da percorrere, supponendo che le cose DLR funzionino davvero (nessuna esperienza qui).Ruby, per quanto lo ami, difficilmente ha la struttura GUI più matura attorno ad esso.

Aggiornamento:Da quando ho scritto questo articolo (circa 5 anni fa) la situazione è leggermente migliorata.Anche se non sono ancora a conoscenza di librerie specifiche per il disegno di grafici Ruby, è stato migliorato il supporto per Graphviz qui (Github) o da gem install ruby-graphviz.Ho scoperto che per grafici semplici è del tutto possibile scrivere lo script direttamente da Ruby.

Altri suggerimenti

Scrivi il tuo diagramma di flusso come un grafico diretto o non diretto in Graphviz.Graphviz ha un linguaggio, punto che semplifica la generazione di grafici.Basta generare il file punto, eseguirlo tramite Graphiviz e ottieni la tua immagine.

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

rende come
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
}

rende come
directed

Puoi controllare le forme dei nodi e molto altro in Graphviz.

Sembra che sarai limitato principalmente dalle capacità di qualunque agente utente per cui stai creando;se si tratta di un progetto Web, le funzionalità di disegno dipenderanno dal browser.Dato che Ruby è in esecuzione lato server, avrai bisogno almeno di JavaScript per consentire il trascinamento/lo zoom, ecc.Ci sono molti esempi di JavaScript utilizzato per il disegno vettoriale (solo google "libreria grafica javascript"), ma tutti richiedono codifica e non ho visto nessuna libreria che lo astragga in modo elegante.

ImageMagick ha un collegamento Ruby chiamato RMagick (a volte conosciuto con altri nomi, a seconda del repository).(Collegamento) Non l'ho usato da solo, ma credo che farà quello che stai cercando.Avrai bisogno di fare un po' di codifica, ma è sulla falsariga di

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

Ne sono assolutamente sicuro, ma dai un'occhiata agli attacchi Cairo per Ruby.Pango per il testo.Sto indagando e mi sono imbattuto in questa pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top