1. 程式人生 > >ASP.NET中Visio圖形的控制與資料顯示

ASP.NET中Visio圖形的控制與資料顯示

    背景: 在實現應用開發中, 存在這樣一種需求, 在一張圖中動態顯示圖中圖元的資料並控制圖元的顯示方式。比如一張電氣接線圖, 需要動態顯示各個開關的狀態及各個電氣裝置的引數。

    問題: 如何以Web方式滿足這樣一個需求?

    解決方案: 用Visio繪製圖形, 在ASP.NET中呼叫Visio提供的程式設計介面去控制Visio圖中的圖元,並轉換成Web上可以顯示的影象格式。對於每個要動態顯示資料的圖形, 定義一個自定義屬性標識它,比如:TagNum, 然後在程式中根據TagNum的值從資料庫中讀取資料來設定相應圖形的資料。

    需要新增對Microsoft Visio 11.0 Type Library的引用(COM元件)。程式碼如下:

using Microsoft.Office.Interop.Visio;
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);
//開啟一個visio檔案conststring CUST_PROP_PREFIX ="Prop."//自定義屬性字首try
{
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)
!=0)//檢查定製是否存在指定定製屬性
{
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應用程式
}
}