ASP.NET中Visio图形的控制与数据的动态显示
背景: 在实现应用开发中, 存在这样一种需求, 在一张图中动态显示图中图元的数据并控制图元的显示方式。比如一张电气接线图, 需要动态显示各个开关的状态及各个电气设备的参数。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
问题: 如何以Web方式满足这样一个需求?
解决方案: 用Visio绘制图形, 在ASP.NET中调用Visio提供的编程接口去控制Visio图中的图元,并转换成Web上可以显示的图像格式。对于每个要动态显示数据的图形, 定义一个自定义属性标识它,比如:TagNum, 然后在程序中根据TagNum的值从数据库中读取数据来设置相应图形的数据。
参考资源: Visio 2003 SDK
示例代码:
需要添加对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应用程序
}
}
测试环境:
Visio 2003+IIS 5.0+.NET FrameWork 1.1
未解决的问题:
1、 即使在一个形状中定义了自定义属性, 通过get_CellExists也无法检测到
2、 不知如何通过代码改变形状的背景色
ASP.NET中Visio图形的控制与数据的动态显示相关推荐
- word中visio图形的处理技巧
word中visio图形的处理技巧 原因分析 word中流程图等画起来麻烦,且各控件间没有关联关系,稍有调整,就需要全部移动一次,呵呵. 在word中加入visio图形 不要直接引入文件或截屏,避免以 ...
- 在ASP.NET中使用ListView控件对数据进行显示、分页和排序
最终效果图如下所示: 使用ListView控件是不需要写代码的,下面我们来看一下ListView的操作流程: 1.首先新建一个ASP窗体 2.然后拖入一个ListView和一个SqlDataSourc ...
- ASP.NET中选择GridView的行获取数据
网上搜一个下总结下面3种 第一种 1.在DataBind()前增加DataKeyNames gvRework.DataSource = ds.Tables["temp"].Defa ...
- WORD中插入VISIO图形,打印乱码解决
1. 在WORD中,右键VISIO图 > VISIO对象 > 转换 > 确定; 2. 或者在复制VISIO图到WORD中时,采用选择性粘贴: 假设在VISIO选择VISIO图: 选择 ...
- Microsoft Word中编辑Visio图形的方法
本文主要介绍在 Microsoft Word 中编辑 Visio 图形的具体方法. 在 Word 中修改 Visio 图形时,经常遇到双击 Visio 图形后,Visio 内容太小不便于修改的情况,而 ...
- word流程图怎么做虚线框_如何在visio中画虚线框以及将visio图形复制到word文档
这两个问题都不是什么复杂的事情,但是如果对visio用的不多或者只是临时用起来碰到了这种问题还真是麻烦事儿. ============================================= ...
- PPT中绘制图形如何导入VISIO编辑
在PPT中绘制图形想要在VISIO中编辑 ①先拆分图形,然后全选,右键选择-另存为图片(S) ②这里要选择保存为矢量图.SVG格式 ③将保存的.svg图片直接拖到打开的VISIO窗口,打开 ④右键选中 ...
- viso 画背景框_如何在visio中画虚线框以及将visio图形复制到word文档
这两个问题都不是什么复杂的事情,但是如果对visio用的不多或者只是临时用起来碰到了这种问题还真是麻烦事儿. ============================================= ...
- 如何在visio中画虚线框以及将visio图形复制到word文档中虚线变为实线的问题
这两个问题都不是什么复杂的事情,但是如果对visio用的不多或者只是临时用起来碰到了这种问题还真是麻烦事儿. ============================================= ...
最新文章
- sysbench压测Oracle
- python函数的参数类型,Python函数的主要参数类型
- python自学教材-python零基础自学教材
- Webex远程网络视频会议使用指南
- python的开发环境有哪些系统_Win10下配置机器学习python开发环境
- ppt图片丢失_041 职场PPT实战:做好的PPT换个电脑就丢字体?三招解决!
- 如何在FineUIMvc(ASP.NET MVC)中显示复杂的表格列数据(列表和对象)?
- Eclipse4JavaEE安装SpringBoot
- Spark初识-弹性分布式数据集RDD
- 题目1017:还是畅通工程(最小生成树初步应用)
- 【BZOJ3223】文艺平衡树,Splay反转区间
- 一个简单的网页抓取工具
- php redis用途,redis可以做什么?
- [网络流24题]孤岛营救问题
- 【转】用Terracotta实现Master-Worker
- 关于Nginx里面的配置文件里面的location参数的意思
- mysql dbutil_DBUtil
- matlab香农编码,用MATLAB编程实现香农编码.doc
- Kubernetes Egress 网络策略指南
- TiDB 在北京银行交易场景中的应用实践
热门文章
- jinchuang正文 nginx配置limit_conn_zone来限制并发连接数以及下载带宽
- 【XStream】XStream 忽略不重要点元素
- Oracle数据库之PL/SQL程序基础设计
- When use jQuery databTables after add action reloa
- objective-C NSNotificationCenter (通知)的使用方法
- 驴友生涯的开始--香八拉路线精选
- 拨号到公司网络操作指南
- BSOJ 3899 -- 【CQOI2014】 数三角形
- 在java中使用redis
- 20160208.CCPP体系具体解释(0018天)