ASP.NET中Visio圖形的控制與資料顯示
阿新 • • 發佈:2019-01-29
背景: 在實現應用開發中, 存在這樣一種需求, 在一張圖中動態顯示圖中圖元的資料並控制圖元的顯示方式。比如一張電氣接線圖, 需要動態顯示各個開關的狀態及各個電氣裝置的引數。
問題: 如何以Web方式滿足這樣一個需求?
解決方案: 用Visio繪製圖形, 在ASP.NET中呼叫Visio提供的程式設計介面去控制Visio圖中的圖元,並轉換成Web上可以顯示的影象格式。對於每個要動態顯示資料的圖形, 定義一個自定義屬性標識它,比如:TagNum, 然後在程式中根據TagNum的值從資料庫中讀取資料來設定相應圖形的資料。
需要新增對Microsoft Visio 11.0 Type Library的引用(COM元件)。程式碼如下:
privatevoid Button1_Click(object sender, System.EventArgs e)
{
Document doc=null;
Cell cell=null;
ApplicationClass app=new ApplicationClass();//執行Visio應用程式string CurrentPath=MapPath(".");
doc=app.Documents.OpenEx(CurrentPath+"/bin/test2.vsd",(short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenCopy);
{
for(int i=1;i<=doc.Pages[1].Shapes.Count;i++)
{
doc.Pages[1].Shapes[i].Rotate90();//將圖形旋轉90度
doc.Pages[1].Shapes[i].Text="hello";//設定圖形的文字if(doc.Pages[1].Shapes[i].get_CellExists("TagNum",(short)Microsoft.Office.Interop.Visio.VisExistsFlags.visExistsAnywhere)
{
doc.Pages[1].Shapes[i].Text=data;//在此處顯示圖形資料
}
}
doc.Saved=true;//告訴Visio應用程式該檔案已儲存, 不然Visio要出現是否要儲存的對話方塊,實際上並未儲存,因為我們不想對原始檔作修改,只是修改過後顯示一下就行了。
doc.Pages [1].Export(CurrentPath+"/test.jpg");//轉換成jpg格式的檔案
}
finally
{
doc.Close();//關閉開啟的檔案
app.Quit();//退出Visio應用程式
}
}