2008-08-14 9 views
15

Ruby를 사용하여 언어 용 플로차트 생성기를 코딩하려고합니다.Ruby 용 도면 라이브러리

다양한 순서도 요소에 다양한 모양을 그리고 그 모양에 텍스트를 쓸 수있는 라이브러리가 있는지 알고 싶습니다.

내가 도울 수 있다면 기본 도형을 그리기위한 코드를 작성하지 않아도됩니다.

누군가 해당 라이브러리를 사용하는 사례와 관련하여 참조 문서를 참조 할 수 있습니까?

+0

나는 동일한 질문을했다. 이드가 System.Drawing 네임 스페이스와 비교할만한 어떤 것도 있음을 알게되었다. – Zasz

답변

2

간단한 대답은 (작성 당시) 거의 확실하게 존재하지 않는다는 것입니다. 죄송합니다!

Windows 기반 사용자라면 뭔가 찾을 수있는 .NET 공간에서 제품을 찾을 수 있습니다. 당신은 아마 진짜 돈을 지불해야 할 것입니다. 내 생각에, 만약 당신이 용감하다면 IronRuby를 사용하여 대화 할 수 있습니다.

비 -MS 환경에서 나는 Java 기반 솔루션을 기대하고 있습니다. 이미 언급했듯이 웹 세계에서 플래시 (또는 심지어 Silverlight?) 세계에서 자바 스크립트 기반 또는 아마도 가능성이있는 무언가가 필요하게 될 것입니다.

사실, Ruby에 머무르고 위험 부담을 감수하고 싶다면 Silverlight를 사용하는 것이 좋습니다. DLR이 실제로 작동한다고 가정하면 (여기서는 경험이 없음). 루비 - 내가 좋아하는 것처럼 - 가장 성숙한 GUI 구조는 거의 없다.

업데이트 :이 글을 쓰면서 (5 년 전에 접근) 상황은 조금 개선되었습니다. 여전히 특정 루비 그래프 드로잉 라이브러리에 대해서는 알지 못하지만 Graphvizhere (Github에 대한 지원이 향상되거나 gem install ruby-graphviz으로 개선되었습니다. 간단한 그래프의 경우 Ruby에서 직접 스크립트를 작성할 수 있다는 것을 알았습니다.

+2

일부 라이브러리는 루비에 존재한다. 비록 당신은 기본적인 요소들로만 일해야 할 것이다. Nathan이 지적한 것처럼 https://rubygems.org/gems/rmagick이 있지만 https://rubygems.org/gems/cairo도 있습니다. 여기 간단한 튜토리얼 http://www.hokstad.com/simple-drawing-in-ruby-with-cairo.html이 있습니다. GTK http://zetcode.com/tutorials/rubygtktutorial/cairo/을 사용하는 또 다른 방법이 있습니다. 나는 이것이 최고의 API가 아니라는 것에 동의해야 할 것이다. 그러나 그것은 시작이다. – Gaston

+4

"Ruby에서 뭔가 필요합니다.", "Try .NET", WTF. – Dorian

+0

@Gaston 너무 나빠서 대답을하지 못했습니다. – Blogueira

3

당신이 구축하고있는 사용자 에이전트의 기능에 의해 주로 제한 될 것 같은데요. 이것이 웹 프로젝트라면 드로잉 기능은 브라우저에 의존하게 될 것입니다. Ruby가 서버 측에서 실행되기 때문에 끌어 오기/확대/축소 등을 허용하려면 JavaScript가 최소한 필요합니다. 벡터 드로잉 (JavaScript "javascript 그래픽 라이브러리")에 사용되는 JavaScript의 예제는 많이 있지만 모두 코딩이 필요합니다. 나는 이것을 우아하게 추상화 한 라이브러리를 보지 못했습니다.

ImageMagick에는 RMagick이라는 Ruby 바인딩이 있습니다 (저장소에 따라 다른 이름으로 불리기도 함). (Link) 본인은 직접 사용하지 않았지만 귀하가 찾고있는 것을 할 것이라고 믿습니다. 코딩을해야 할 것입니다 만 라인을 따라 가야합니다

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

전적으로 확신하지만 루비에 대한 카이로 바인딩을 확인하십시오. 텍스트 판고. 나는 그때 현재 조사 중이며이 페이지를 보았다.

17

플로 차트를 방향성 또는 무향 그래프로 Graphviz에 기록하십시오. Graphviz에는 그래프를 쉽게 생성 할 수있는 언어 인 dot이 있습니다. 도트 파일을 생성하고 Graphiviz를 통해 실행하면 이미지를 얻을 수 있습니다.당신은 노드의 모양을 제어하고 graphviz를 훨씬 더 할 수 directed


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 
} 

가 렌더링 undirected

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

는 렌더링합니다.