您的位置: 包头信息港 > 健康

ASPNET中Visio图形的控制与数据

发布时间:2019-05-18 02:57:52

背景:在实现应用开发中,存在这样一种需求,在一张图中动态显示图中图元的数据并控制图元的显示方式。比如一张电气接线图,需要动态显示各个开关的状态及各个电气设备的参数。

问题:如何以Web方式满足这样一个需求?

解决方案:用Visio绘制图形,在中调用Visio提供的编程接口去控制Visio图中的图元,并转换成Web上可以显示的图像格式。对于每个要动态显示数据的图形,定义一个自定义属性标识它,比如:TagNum,然后在程序中根据TagNum的值从数据库中读取数据来设置相应图形的数据。

参考资源:Visio 2003 SDK

示例代码:

需要添加对Microsoft Visio 11.0 Type Library的引用(COM组件)。代码如下:

sio;

privatevoidButton1_Click(objectsender, entArgs e)

{

Document doc=null;

Cell cell=null;

ApplicationClass app=newApplicationClass();//运行Visio应用程序

stringCurrentPath=MapPath(.);

doc=enEx(CurrentPath+d,(short)sOpenCopy);//打开一个visio文件

conststringCUST_PROP_PREFIX = Prop.;//自定义属性前缀

try

{

for(inti=1;i=ges[1].unt;i++)

{

ges[1].Shapes[i].Rotate90();//将图形旋转90度

ges[1].Shapes[i].Text=hello;//设置图形的文本

if(ges[1].Shapes[i].get_CellExists(TagNum,(short)sExistsAnywhere)!=0)//检查定制是否存在指定定制属性

{

ges[1].Shapes[i].Text=data;//在此处显示图形数据

}

}

ved=true;//告诉Visio应用程序该文件已保存,不然Visio要出现是否要保存的对话框,实际上并未保存,因为我们不想对源文件作修改,只是修改过后显示一下就行了。

ges [1].Export(CurrentPath+g);//转换成jpg格式的文件

}

finally

{

ose();//关闭打开的文件

it();//退出Visio应用程序

}

}

测试环境:

Visio 2003+IIS 5.0+.NET FrameWork 1.1

未解决的问题:

1、即使在一个形状中定义了自定义属性,通过get_CellExists也无法检测到

2、不知如何通过代码改变形状的背景色

水陆挖机出租
激光打靶设备
正规捕鱼游戏平台
猜你会喜欢的
猜你会喜欢的