Pergunta

Estou tentando codificar um gerador de fluxograma para uma linguagem usando Ruby.

Eu queria saber se havia alguma biblioteca que eu pudesse usar para desenhar várias formas para os vários elementos do fluxograma e escrever texto nessas formas.

Eu realmente preferiria não ter que escrever código para desenhar formas básicas, se puder.

Alguém pode me indicar alguma documentação de referência com exemplos de uso dessa biblioteca?

Foi útil?

Solução

A resposta simples é que (no momento em que escrevo) o que você deseja quase certamente não existia.Desculpe!

Se você usa Windows, procuraria um produto no espaço .NET, onde espero que você encontre algo.Você provavelmente terá que pagar com dinheiro de verdade.Suponho que, se você for corajoso, poderá falar com ele usando IronRuby.

De um ambiente não-MS, eu esperaria uma solução baseada em Java.Como já mencionado, no mundo da Web, você espera algo baseado em JavaScript ou, provavelmente, mais provavelmente, algo do mundo Flash (ou talvez até mesmo do Silverlight?).

Na verdade, se você quiser permanecer em Ruby e não se importar com riscos, o Silverlight pode ser uma boa opção - presumindo que o material DLR realmente funcione (não há experiência aqui).Ruby - por mais que eu goste dele - dificilmente possui a estrutura GUI mais madura.

Atualizar:Desde que escrevi isto (há cerca de 5 anos), a situação melhorou – um pouco.Embora eu ainda não tenha conhecimento de nenhuma biblioteca específica de desenho de gráficos Ruby, há suporte aprimorado para Gráficoviz aqui (Github) ou pela gem install ruby-graphviz.Descobri que para gráficos simples é bem possível escrever o script diretamente do Ruby.

Outras dicas

Escreva seu fluxograma como um gráfico direcionado ou não direcionado em Gráficoviz.Graphviz tem uma linguagem, ponto isso facilita a geração de gráficos.Basta gerar o arquivo ponto, executá-lo no Graphiviz e você obterá sua imagem.

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

renderiza 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
}

renderiza como
directed

Você pode controlar as formas dos nós e muito mais no Graphviz.

Parece que você ficará limitado principalmente pelos recursos de qualquer agente de usuário para o qual está construindo;se este for um projeto web, os recursos de desenho dependerão do navegador.Como Ruby está sendo executado no lado do servidor, você precisaria no mínimo de algum JavaScript para permitir arrastar/ampliar, etc.Há muitos exemplos de JavaScript sendo usado para desenho vetorial (basta pesquisar no Google "biblioteca de gráficos javascript"), mas todos exigem codificação, e não vi nenhuma biblioteca que abstraia isso com elegância.

ImageMagick possui uma ligação Ruby chamada RMagick (às vezes conhecida por outros nomes, dependendo do repositório).(Link) Eu mesmo não usei, mas acredito que fará o que você está procurando.Você precisará fazer alguma codificação, mas é na linha de

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

Tenho certeza absoluta, mas verifique as ligações do Cairo para Ruby.Pango para texto.Estou investigando atualmente e me deparei com esta página.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top