这个问题有点复杂,从以下几个原则出发:
1 我们把最基本的流程单位,如分支,并流,顺序等等都做成图元,这些图元是最基本的图形符号,全部是矢量的,这样方便缩放,旋转和变形.这些图元就象PB中的控件那样可以选择或拖动到窗口上成为真正的图形符号,图元和图形符号之间是类和实例的关系,图形符号具有图元的所有信息结构,图形符号本身具有缩放,调整等方法函数以及相关事件.
2 图形符号和图形符号的关系应该区分开来,比如有三个图形符号:顺序1,顺序2,分支1,顺序1 的下一个流程 是 分支1, 分支1 的下一个流程是 顺序2,那么 顺序1,顺序2,分支1 这三个图形符号应该以某种结构数组记录下来,它们的关系应该以另一个结构数组记录下来,这在让我们的系统在"理解"这些图形符号所表达的流程意图时很方便,因为只需要访问记录它们关系的那个结构数组就可以了.
3 请仔细研究图形学,关于图象旋转,缩放,判断一个点是否在多变形(热区)之内,如何画出圆和多边形这里不讲解,如有疑问,可以提出,我会予以解答.
4 由于存在缩放和调整,图形符号的坐标,它的热点坐标,热点中心坐标,高度,宽,X,Y都应该在缩放和调整的时候一起进行运算,并被一起保存起来.这样在下次载入图形符号时候系统就知道它的具体大小是多少,热点区域,热点中心也可以直接载入,不必重新计算,提高了效率.
1 关于图元:
大家知道,所有的图形都是由线或弧组成的,图元是最基本的图形符号,所以用线和弧来描述是很适合的.加上图元都比较简单,所以一般也不会有过度烦琐的设计问题.
1.1 一个图元可能由多个线或弧组成
1.2 一个图元可能有多个热区,所谓热区就是一个图形符号可以和其他图形符号连上线的操作区域,鼠标从这个区域里按左键拖动到另一个图形符号的热区中,就能把两个图形符号连接起来
1.3 一个图元可能有多个属性,比如, 条件 图元可能有 真执行描述 ,假执行描述 , 而 顺序 图元可能只有 执行描述 这个属性.
所以,建立如下结构: [1..* 代表一对多,这个大家应该都明白吧,都是做数据库的嘛!:) ]
图元结构:
图元名,基本描述(1..*),热区(1..* ),图元属性(1..*)
基本描述结构: [类型可以是线,也可以是弧]
序号,开始x,开始y,结束x,结束y,圆心坐标,半径,起始度数,终止度数,竖轴长度,横轴长度,类型
热区结构: [嘿嘿,基本描述是用来说明热区的封闭区域的,中心坐标是图形符号和其他图形符号连线的时候,线的起点从哪里算起]
热区名,中心坐标,基本描述(1..*)
图元属性结构: [属性类别:如通常,布局,属性中都有x,y,width,height这些东东的]
属性名,属性注释,属性值类型,属性类别
2 关于图形符号
图形符号是图元放到设计画板上的东西,是图元的"实例",结构如下:
图形符号结构: [这里的信息都是描述图形符号的,至于说还有 基本描述 和 热区 主要是因为图形符号可能会缩放或变形和旋转,这样它的基本形状和热区就要一起进行运算,运算完成后需要保存到这个结构里来,保持这些图形符号的个性嘛!!!哈哈.属性值里面放了用户为这个图形符号设置的各个属性的具体值,不要忘记了,还有坐标和长宽也在里面]
图形符号名,图元名,属性值(1..*),文本,基本描述(1..n),热区(1..n)
属性值结构: [很简单,是嘛!和图元中的属性对号入座就OK了]
属性名,属性值
基本描述结构和热区结构和图元中的一样.
3 关于图形符号关系
图形符号关系是图形符号和图形符号之间的连接,其实是热区和热区之间的连接:图形符号关系结构如下:
图形符号名,热区名,连接到的图形符号名,连接到的图形符号热区名
这里讲解几个简单的过程,希望大家多提意见啊,我希望以后扩充这项研究,现在只是提一个雏形出来而已.
1 装入: 假定,我们的数据库里存放着这样结构的信息:
图形符号(1..*)
图形符号关系(1..*)
图元
呵呵,这个大家都明白了吧,其实很简单,把图形符号的信息和它们的关系信息都保存起来了.呵呵,而且结构也很清楚咯:)
具体做法是: 将 图形符号(1..*) 和 图形符号关系(1..*) 的信息读取到 内存中去,建立相似的结构数组来存放它们,这些结构树组我们在上面讲过了吧:)
有了这些结构树组的值,然后依次显示到画板上.
2 设置 起始图形符号,起始图形符号热区 为空串,这个的作用在后面就知道了.
3 假定这时用户选择了一个 图元名,把它拖动到设计画板上,系统要生成图形符号,怎么做呢?
首先从 图元 的表中取得相关信息,并创建一个 图形符号 控件到画板上来,让 图形符号 根据 这些信息来画出自己,呵呵!当然了,图形符号保存有自己的所有属性信息.
4 缩放,学过图形学的朋友都知道吧,呵呵!其实不学图形学也知道怎么做的:)
5 旋转,用距阵去乘,哈哈!不会做的可以上网查查,有通用程序的.
6 移动,更不用提了
7 连接:这个我来说说,
a. 在图形符号上从热区按住左键移出,把图形符号名赋予 起始图形符号,热区 赋予 起始图形符号热区
b. 左键在画板或非热区上松开设置 起始图形符号 和 起始图形符号热区 为空
c. 左键在热区上松开判断当前的图形符号是否是 起始图形符号 ,不是的话就连接热区吧.不要忘记了,把结构数组 图形符号关系 填个值进去.呵呵. 起始图形符号 和 起始图形符号热区也别忘了清空串哟
8 保存 很简单了,把图形符号,图形符号关系的结构数组 保存到 对应的表里!
自定义流程的图形操作界面设计
博客围绕图形符号与数据库展开,介绍将基本流程单位做成图元,阐述图元、图形符号及其关系的结构设计。还提及图形学相关知识,如旋转、缩放等。最后说明了图形符号的装入、生成、缩放、旋转、连接和保存等操作流程,以提高系统处理图形的效率。

被折叠的 条评论
为什么被折叠?



