使用silverlight构建一个工作流设计器(十三)(动态生成流程图片下载_上)

首先庆祝一下源代码在codeplex上下载量超过1000

另外本演示程序放在微软免费的silverlight host上面,您也可以申请免费的空间。

地址在http://silverlight.live.com/ 

技术支持QQ群:85444465

源代码下载:http://www.shareidea.net/opensource.htm

在线演示:http://www.shareidea.net/workflow.htm

视频教程: http://www.shareidea.net/video/sharedesigner/sharedesigner.html

本文系列索引: 

使用silverlight构建一个工作流设计器(一)

使用silverlight构建一个工作流设计器(二)

使用silverlight构建一个工作流设计器(三)

使用silverlight构建一个工作流设计器(四)

使用silverlight构建一个工作流设计器(五)

使用silverlight构建一个工作流设计器(六)

使用silverlight构建一个工作流设计器(七)

使用silverlight构建一个工作流设计器(八)

使用silverlight构建一个工作流设计器(九)

使用silverlight构建一个工作流设计器(十)  

使用silverlight构建一个工作流设计器(十一)  

使用silverlight构建一个工作流设计器(十二)  

使用silverlight构建一个工作流设计器(十三)  

 

9.1问题描述

今天有网友问,这个工作流设计器能不能生成对应的图片呢?我想不出生成图片能有什么作用,如果想用图片,我们大可以使用拷屏的方法保存到画图中,然后再保存在系统文件夹。不过作为一种尝试,不妨去试着去实现这个功能。

9.2遇到的困难

动态生成图片,首先想到的就是使用System.Drawring相关的类,但在silverlight中并没有提供对System.Drawring的支持,网上查了一下,得到的答案是微软并没有打算在silverlight中提供对System.Drawring的支持。

另外,在silverlight中无法直接进行文件的保存操作。

这些困难都说明,要想在silverlight中直接生成图片并保存,目前是不可行的。

9.3解决方法

       虽然我们不能直接在silverlight中生成图片保存,但我们的目的的生成图片,至于在什么地方生成图片,并没有固定的要求。我们知道,在asp.net中,我们经常使用System.Drawring相关类在动态生成图片,这个方法提醒我们,可以将生成图片的方法延迟到后台的服务中,然后访问后台生成的图片即可。用下面的图片来表示整个流程

上面是一个理想的执行过程,但是在实际应用中发现有疑点问题,就是在生成图片后回调silverlight的函数中无法打开一个新的网页。只能把打开网页的代码放在按钮点击事件中,不过这对用户来说没有任何影响,只不过我们需要多做一点工作而已。在下面的代码中体现了这一点不同。

9.3.1 建立webservices文件

建立一个webservice文件,命名为createPic.asmx,在后台代码中根据传入的流程图xml描述文件动态生成图片。对应的框架代码如下:

 

Code

 

9.3.2 添加webservice引用

具体方法请参考http://kb.cnblogs.com/page/42888/?page=1

在流程容器页面Container.xaml添加一个按钮,在按钮事件中编写访问生成图片的代码,同时开发一个页面浏览生成的图片,代码如下所示,请注意其中的注释内容,另外,如果我们将项目部署到服务器上给客户用,那么需要修改动态设定服务路径,在下面的代码中有所体现。

 

Code

 

9.3.3 建立图片显示页面

建立一个picture.aspx。这个文件接受一个参数pictureName,接受上一部的文件名称。根据参数检查是否存在这样的文件,如果存在,则将内容发送到客户端,如果不存在,那么显示一个错误消息,代入如下所示:

 

Code

 

 到现在为止,一个动态生成流程图图片的框架就完成了,因为还没有编写具体的活动和规则的图片生成方法,所以只是生成一个显示文件名称的图片。下一章将具体完成生成图片的代码。

原文地址:https://www.cnblogs.com/chegan/p/1492781.html