[趣味編程]時序圖可以這樣畫

                                            [趣味編程]時序圖可以這樣畫
                                                      周銀輝
看一下下面的截圖:

和平時我們以"拖拽"方式畫時序圖不一樣的是,我們這個時序圖是用"文本編輯"出來的, 也就是在窗口左上角的文本框中鍵入一些語句,然後點擊右邊的"Generate",一個時序圖就展現在你面前了,挺有意思吧.
右側的那一堆按鈕,是輔助你"偷懶"用的,少敲幾個文本而已, 點擊按鈕會將按鈕上的文本插入到左側的文本框中.
不要誤會, 我可沒那麼大的能力和那麼多的時間來編寫一個時序圖生成器,其中生成器的API是由 http://www.websequencediagrams.com/  提供的,將http://www.websequencediagrams.com?sytle=myStyle&message=myCode/作爲WebResponse,其將返回生成的圖像流, 其中style=myStyle指定生成的圖像的風格,message=myCode即傳入的代碼,比如上圖文本框中的文本.
    public enum SequenceDiagramStyle
    {
        Rose,
        qsd,
        napkin,
        mscgen
    }

    
public static class SequenceDiagramsGenerator
    {
        
private const string GeneratorUri = @"http://www.websequencediagrams.com/";


        
public static Bitmap GenerateSequenceDiagram(string code, SequenceDiagramStyle style)
        {
            var data 
= "style=" + style + "&message=" + code;

            WebRequest request 
= WebRequest.Create(GeneratorUri + "?" + data);
            request.Credentials 
= CredentialCache.DefaultCredentials;

            var response 
= (HttpWebResponse)request.GetResponse();

            Stream dataStream 
= response.GetResponseStream();

            Bitmap bmp;
            
try
            {
                bmp 
= new Bitmap(dataStream);
            }
            
finally
            {
                dataStream.Close();
                response.Close();
            }

            
return bmp;
        }
        
    }

當然, 個人覺得這僅供娛樂或繪製一些較簡單的時序圖, 原因很簡單,圖的佈局是自動生成的而不能自定義以及其現在還不能完整地支持所有的組合片段.
關於生成時序圖的語句的語法,可以參考這裏 http://www.websequencediagrams.com/examples.html

附上DEMO, 要想獲得上圖的手繪效果,請將程序右側下拉框選擇爲napkin
Demo: http://files.cnblogs.com/zhouyinhui/SequenceDiagramsDemo.zip
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章