|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。背景:在完成使用开辟中,存在如许一种需求,在一张图中静态显现图中图元的数据并把持图元的显现体例。好比一张电气接线图,必要静态显现各个开关的形态及各个电气设备的参数。
成绩:怎样以Web体例满意如许一个需求?
办理计划:用Visio绘制图形,在ASP.NET中挪用Visio供应的编程接口往把持Visio图中的图元,并转换成Web上能够显现的图象格局。关于每一个要静态显现数据的图形,界说一个自界说属性标识它,好比:TagNum,然后在程序中依据TagNum的值从数据库中读取数据来设置响应图形的数据。
参考资本:Visio2003SDK
示例代码:
必要增加对MicrosoftVisio11.0TypeLibrary的援用(COM组件)。代码以下:
usingMicrosoft.Office.Interop.Visio;
privatevoidButton1_Click(objectsender,System.EventArgse)
{
Documentdoc=null;
Cellcell=null;
ApplicationClassapp=newApplicationClass();//运转Visio使用程序
stringCurrentPath=MapPath(".");
doc=app.Documents.OpenEx(CurrentPath+"bintest2.vsd",(short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenCopy);//翻开一个visio文件
conststringCUST_PROP_PREFIX="Prop.";//自界说属性前缀
try
{
for(inti=1;i<=doc.Pages[1].Shapes.Count;i++)
{
doc.Pages[1].Shapes.Rotate90();//将图形扭转90度
doc.Pages[1].Shapes.Text="hello";//设置图形的文本
if(doc.Pages[1].Shapes.get_CellExists("TagNum",(short)Microsoft.Office.Interop.Visio.VisExistsFlags.visExistsAnywhere)!=0)//反省定制是不是存在指定定制属性
{
doc.Pages[1].Shapes.Text=data;//在此处显现图形数据
}
}
doc.Saved=true;//告知Visio使用程序该文件已保留,否则Visio要呈现是不是要保留的对话框,实践上并未保留,由于我们不想对源文件作修正,只是修正事后显现一下就好了。
doc.Pages[1].Export(CurrentPath+"test.jpg");//转换成jpg格局的文件
}
finally
{
doc.Close();//封闭翻开的文件
app.Quit();//加入Visio使用程序
}
}
测试情况:
Visio2003+IIS5.0+.NETFrameWork1.1
未办理的成绩:
1、即便在一个外形中界说了自界说属性,经由过程get_CellExists也没法检测到
2、不知怎样经由过程代码改动外形的背景致
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 |
|