半岛权威十大直营(官方)网站

ASP.NET中Visio图形的控制与数据显示

转帖|其它|编辑:郝浩|2010-09-29 11:54:25.000|阅读 777 次

概述:在实现应用开发中, 存在这样一种需求, 在一张图中动态显示图中图元的数据并控制图元的显示方式。比如一张电气接线图, 需要动态显示各个开关的状态及各个电气设备的参数。本文将要介绍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@wqylolg.cn

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP