发表于:2005-06-29 11:13:00
楼主
Visual Graph的绘图命令典型地反映了设计者一贯的设计作风,就是用最简便的办法实现通用、灵活的功能。
基本的绘图元素是文字(Text)、形状(Shape)、线条(Line),如果设计者不假思索,很容易设计出这样的命令:
NewText、NewShape、NewLine等等。
但是还有图元,数不清类别的图元怎么办?设计一个NewElement函数么?Visual Graph的图元可不是简单的图形组合,而是真正意义上的图元,就像我们常常使用的刀闸、开关、温度计、滚动条、列表框、日历、时钟、曲线图、饼图、棒图等等,这些图元是用户自行设计开发的,所以,为了区别各类不同的图元,绘制图元的命令中就应该带一个参数,那就是图元的类型名。
但是这就和前面那三条命令的参数不一致了。因为三种基本图形的创建并不需要一个类型名参数。此外,本来是绘制图形这么简单的一件事情,却要做出四个命令来,太浪费,不划算。
因此,Visual Graph最终只提供了一个命令,叫做NewUnit,Unit表示图形单元的意思。
NewUnit的参数是ClassName,如果创建文字单元,那么参数就是“Text”,如果创建形状单元,那么参数是“Shape”,如果创建线条单元,那么参数就是“Line”,如果创建图元,那么参数就是各种不同的类别字符串,诸如“刀闸”、“开关”、“温度计”等等。这样,用一个命令就把四种图形统一了。
还有一个问题,Visual Graph如何识别你输入的图元参数“刀闸”呢?它怎么知道刀闸应该怎么画呢?
前面我们说了,Visual Graph设计了一种非常优秀的图形文件格式,使得图形文件同时也可以被看作是图库文件,不用单独设计载入图库的命令。
现在,关键是让Visual Graph知道,上面参数中的“刀闸”在哪个图库中,因为可能你同时打开了多个图形文件,而它们里面都有“刀闸”。因此,为了区分哪个图形文件将被视为当前图库,有一个布尔型的Library属性,实际是一个状态值,当指定某个图形文件是图库的时候,就设Library=true,同时其他控件的Library属性自动归为false。为了避免图元重复,系统规定当前只能有一个图元库。当你开始画“刀闸”这个图元的时候,Visual Graph从现在图库中寻找名叫“刀闸”的页面,并且把页面看作图元拷贝进来。
www.Visual-Graph.com