背景 在實現應用開發中 存在這樣一種需求 在一張圖中動態顯示圖中圖元的數據並控制圖元的顯示方式比如一張電氣接線圖 需要動態顯示各個開關的狀態及各個電氣設備的參數
問題 如何以Web方式滿足這樣一個需求?
解決方案 用Visio繪制圖形 在ASPNET中調用Visio提供的編程接口去控制Visio圖中的圖元並轉換成Web上可以顯示的圖像格式對於每個要動態顯示數據的圖形 定義一個自定義屬性標識它比如TagNum 然後在程序中根據TagNum的值從數據庫中讀取數據來設置相應圖形的數據
需要添加對Microsoft Visio Type Library的引用(COM組件)代碼如下
using MicrosoftOfficeInteropVisio;
private void Button_Click(object sender SystemEventArgs e)
{
Document doc=null;
Cell cell=null;
ApplicationClass app=new ApplicationClass();//運行Visio應用程序
string CurrentPath=MapPath();
doc=appDocumentsOpenEx(CurrentPath+\\bin\\testvsd(short)MicrosoftOfficeInteropVisioVisOpenSaveArgsvisOpenCopy);//打開一個visio文件
const string CUST_PROP_PREFIX = Prop; //自定義屬性前綴
try
{
for(int i=;i<=docPages[]ShapesCount;i++)
{
docPages[]Shapes[i]Rotate();//將圖形旋轉度
docPages[]Shapes[i]Text=hello;//設置圖形的文本
if(docPages[]Shapes[i]get_CellExists(TagNum(short)MicrosoftOfficeInteropVisioVisExistsFlagsvisExistsAnywhere)!=)//檢查定制是否存在指定定制屬性
{
docPages[]Shapes[i]Text=data;//在此處顯示圖形數據
}
}
docSaved=true;//告訴Visio應用程序該文件已保存 不然Visio要出現是否要保存的對話框實際上並未保存因為我們不想對源文件作修改只是修改過後顯示一下就行了
docPages []Export(CurrentPath+\\testjpg);//轉換成jpg格式的文件
}
finally
{
docClose();//關閉打開的文件
appQuit();//退出Visio應用程序
}
}
From:http://tw.wingwit.com/Article/program/net/201311/11546.html