轉帖|其它|編輯:郝浩|2010-09-29 11:54:25.000|閱讀 799 次
概述:在實現應用開發中, 存在這樣一種需求, 在一張圖中動態顯示圖中圖元的數據并控制圖元的顯示方式。比如一張電氣接線圖, 需要動態顯示各個開關的狀態及各個電氣設備的參數。本文將要介紹ASP.NET中Visio圖形的控制與數據顯示問題,希望對大家有用。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在實現應用開發中, 存在這樣一種需求, 在一張圖中動態顯示圖中圖元的數據并控制圖元的顯示方式。比如一張電氣接線圖, 需要動態顯示各個開關的狀態及各個電氣設備的參數。 如何以Web方式滿足這樣一個需求?
解決的方法就是用Visio繪制圖形, 在ASP.NET中調用Visio提供的編程接口去控制Visio圖中的圖元,并轉換成Web上可以顯示的圖像格式。對于每個要動態顯示數據的圖形, 定義一個自定義屬性標識它,比如:TagNum, 然后在程序中根據TagNum的值從數據庫中讀取數據來設置相應圖形的數據。
需要添加對Microsoft Visio 11.0 Type Library的引用(COM組件)。代碼如下:
using Microsoft.Office.Interop.Visio;
private void 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文件
const string 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應用程序
}
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載