背景: 在实现应用开发中, 存在这样一种需求, 在一张图中动态显示图中图元的数据并控制图元的显示方式。比如一张电气接线图, 需要动态显示各个开关的状态及各个电气设备的参数。
问题: 如何以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应用程序 } } |
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- .NET移动与嵌入式技术 (6094篇文章)
- .NET开发手册 (5777篇文章)
- ASP.NET教程 (8599篇文章)
- ASP.NET应用篇 (2702篇文章)
- ASP.NET与数据库 (287篇文章)
- ASP.NET生成静态页面和分页主要的原理 (50次浏览)
- ASP.NET2.0—— 实现数据访问层 (41次浏览)
- SqlHelper类 (26次浏览)
- Asp.net 2.0 自定义控件开发 (21次浏览)
- asp.net 中实现窗体两边的浮动条 (19次浏览)
- 在ASP.Net中实现flv视频转换 (15次浏览)
- 读写xml个人小结 (14次浏览)
- 验证控件的气泡提示效果 (12次浏览)
- .NET企业级应用架构设计之技术选型 (11次浏览)
- ASP.NET MVC源代码可以下载 (11次浏览)



