Subscribed unsubscribe Subscribe Subscribe

.NETでVisioクローンを作りたい

Visio的なUIを持ったフォームアプリケーションを作りたい,ということでOpendiagramというオープンソースの.NET用ライブラリを使ってみた.
Open Diagram - Home

ちょっと木構造を書くくらいなら簡単で,こんな感じに書けばVisio的なパレットの上に移動,拡大縮小が可能なモデルがぽいぽい置かれる.

Model model = this.diagram1.Model;
diagram1.Model.SetSize(new Size(1000, 1000));

//親ノードの配置
Shape shape = new Shape();
shape.Location = new PointF(300, 50);
model.Shapes.Add("parent", shape);

//子ノードの配置
shape = new Shape();
shape.Location = new PointF(200, 200);
model.Shapes.Add("child1", shape);

shape = new Shape();
shape.Location = new PointF(400, 200);
model.Shapes.Add("child2", shape);

//エッジの配置
TreeLine treeLine = new TreeLine();
treeLine.AddStart(model.Shapes["parent"]);
treeLine.AddEnd(model.Shapes["child1"]);
treeLine.AddEnd(model.Shapes["child2"]);

http://gyazo.com/cad4c26641ddb5adc14c755d10e37da6.png

UML的な図もさっくり書けた.
http://gyazo.com/1a709a37adcdeab325437e585bf50e60.png

んで,これを使ってちょっとしたアプリケーションを作ろうしているのだけど,どうも色々嵌りどころがありそうな感じ(コピペの実装をするためだけに元のコードを数か所いじる必要があった…).あまり活発なプロジェクトではないようなので,使用例も見つけづらいのが残念.ちなみにこのプロジェクト自体は以下のページで知った.

参考:C# で使えるグラフやチャート系ライブラリのまとめ - アジャイルプログラマの日常

あとは,Visioを持ってるのであればVSと相互運用が可能なので,ここらへん参考にまるごと組み込んでしまうほうが素直なのかもしれない.
Drawing Visio Shapes in the Visio ActiveX Control Using C# and .NET
Programming with the Microsoft Office Visio 2003 ActiveX Control