轉(zhuǎn)帖|其它|編輯:郝浩|2010-09-29 11:54:25.000|閱讀 799 次
概述:在實(shí)現(xiàn)應(yīng)用開發(fā)中, 存在這樣一種需求, 在一張圖中動(dòng)態(tài)顯示圖中圖元的數(shù)據(jù)并控制圖元的顯示方式。比如一張電氣接線圖, 需要?jiǎng)討B(tài)顯示各個(gè)開關(guān)的狀態(tài)及各個(gè)電氣設(shè)備的參數(shù)。本文將要介紹ASP.NET中Visio圖形的控制與數(shù)據(jù)顯示問題,希望對大家有用。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在實(shí)現(xiàn)應(yīng)用開發(fā)中, 存在這樣一種需求, 在一張圖中動(dòng)態(tài)顯示圖中圖元的數(shù)據(jù)并控制圖元的顯示方式。比如一張電氣接線圖, 需要?jiǎng)討B(tài)顯示各個(gè)開關(guān)的狀態(tài)及各個(gè)電氣設(shè)備的參數(shù)。 如何以Web方式滿足這樣一個(gè)需求?
解決的方法就是用Visio繪制圖形, 在ASP.NET中調(diào)用Visio提供的編程接口去控制Visio圖中的圖元,并轉(zhuǎn)換成Web上可以顯示的圖像格式。對于每個(gè)要?jiǎng)討B(tài)顯示數(shù)據(jù)的圖形, 定義一個(gè)自定義屬性標(biāo)識(shí)它,比如:TagNum, 然后在程序中根據(jù)TagNum的值從數(shù)據(jù)庫中讀取數(shù)據(jù)來設(shè)置相應(yīng)圖形的數(shù)據(jù)。
需要添加對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();//運(yùn)行Visio應(yīng)用程序
string CurrentPath=MapPath(".");
doc=app.Documents.OpenEx(CurrentPath+"\bin\test2.vsd",(short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenCopy);//打開一個(gè)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();//將圖形旋轉(zhuǎn)90度
doc.Pages[1].Shapes[i].Text="hello";//設(shè)置圖形的文本
if(doc.Pages[1].Shapes[i].get_CellExists("TagNum",(short)Microsoft.Office.Interop.Visio.VisExistsFlags.visExistsAnywhere)!=0)//檢查定制是否存在指定定制屬性
{
doc.Pages[1].Shapes[i].Text=data;//在此處顯示圖形數(shù)據(jù)
}
}
doc.Saved=true;//告訴Visio應(yīng)用程序該文件已保存, 不然Visio要出現(xiàn)是否要保存的對話框,實(shí)際上并未保存,因?yàn)槲覀儾幌雽υ次募餍薷?只是修改過后顯示一下就行了。
doc.Pages [1].Export(CurrentPath+"\test.jpg");//轉(zhuǎn)換成jpg格式的文件
}
finally
{
doc.Close();//關(guān)閉打開的文件
app.Quit();//退出Visio應(yīng)用程序
}
}
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載