CD在以前的版本(版本6以前)中是带有表格功能的,叫CorelChart,支持的格式远比现在的AI CS和FH MX要多,我记忆中共有十三种之多,只是不支持中文,真的需要中文只能先做好表格后再将问题替换掉。现在的CD没有工具直接生成表格了,所以不少人觉得CD没有办法精确生成表格比例图了。然而,有一点是大家忽略的地方,CD是一个充分考虑端口开放的软件(这一点其它软件都很难做到),我们可以通过这个特性来做出自己的算法,以CD能接受的方式将数据传递过去。
我以下就以精确比例饼图做为例子,对CD的另一种使用方法——Action Script做以最初步的窥探。
这个样例的数据如下:

对于矢量软件来说,一个矢量图形必然有一段与之对应的、唯一的描述,这些描述就是软件执行计算所用到的公式中必不可少的参数。在用户使用矢量软件的工具绘制或更改一个图形的时候,其实就是在更改这些数。——如果用户使用的矢量软件提供可视化数值功能的话,在你绘图或更改图形的过程中你会看到这些参数的数值会根据你的光标操作而改变,如:


CD之所以说它端口开放,因为它的函数是开放的,遵循VB的格式。也因为它的参数是开放的,是一个支持VB格式表达式的变量。换句话说,只要是VB支持的计算方式,CD就支持——这就包括了VB的系统函数、自定义函数、数组等等。

3+2、20/5........
FH和AI都支持。
但是CD的数值支持更多,你可以在CD的输入框中输入具有优先运算的表达式,CD就能按你的意思计算出正确的数值,如:
(50+20+10+5+2)/360*50
但你在FH和AI中,你做不到。CD甚至还直接支持sin、tag等系统定义的数学函数。感兴趣的不妨一试。只是CD的数据输入框太小,无法看完输入的字符,得比较小心操作,以免误留残余字符导致计算出的值并非你想要的数值而已。
在前面我说到CD支持运算公式例如——50/(50+20+10+5+2)*360。这个公式就是饼图中计算数据比例的公式,计算出的值就是qin走在街头15-20岁PLMM回头率(为了满足Qin的奢望,呵呵,把年龄段给放宽了),这是很简单的数学计算,就此带过。
既然懂得计算公式了就可以开始绘图了。
先将公式打好。Crtl+C拷贝。






X1,X2,X3......Xn
比例数据计算公式为:
0/(X1+X2+X3+......+Xn)*360
X1/(X1+X2+X3+......+Xn)*360
(X1+X2)/(X1+X2+X3+......+Xn)*360
(X1+X2+X3)/(X1+X2+X3+......+Xn)*360
.......
(X1+X2+X3+......+Xn)/(X1+X2+X3+......+Xn)*360
对于圆来说0度的位置和360度的位置是相等的。所以在这个公式不会存在误差问题。 在这里我对“函数”说明一下。
Script中的函数不仅仅是数学意义上的函数。数学函数只是当中的一种。Script中的函数实际上是一组命令,包括逻辑判断、循环指令、运算公式......等等等等。一个完整、通用的Script是允许用户更改参数数值的,然后Script可以根据用户的数值做以判断,并最终算出用户想得到的结果。

.CreateRectangle .SetCornerRoundess .ApplyOutline
这三个命令就是CD内核执行绘图和修改的命令函数,分别功能为:建立方形、设置物体圆角值、应用外框线(从字面上都能读出来,命名相当直观)。由于在.CreateRectangle函数中的参数嵌有计算公式,而该公式中包含有能让用户设置数值的变量,因而就能绘制出用户指定数据的方形。 这个脚本是一个相当简单的例子,可以做为学习CD script的入门教程。
有关CD内核执行绘图和修改的命令函数,可以参阅CD自带的函数说明,该文件默认是C:\Program Files\Corel\Graphics9\Programs\Draw_scr.hlp,根据你安装路径找到对应目录即可找到。 CD的Script功能强大之处不在录制,在于编写。 如果不能用得到CD就没必要花这么大的工夫预留这个接口了,这会增加CD的开发难度——在编写每一功能的时候都要考虑让用户可以通过Script来直接调用它。完全不考虑这点要简单得多。 贴近实际应用的例子都不会简单。因为越方便的功能就需要越多的考虑,用Script写出来就会结构更复杂、调用的命令函数更多。这种例子不适宜当为入门教程。即便举出来也会让入门者摸不着头脑,甚至会吓退很多人。所以很多编程的教程都从“Hello world”教起,出个对话框说“Hello world”有什么实际用途?在实际的应用中我没见过有谁这么做过。但它是入门教程,它教你怎么控制一个对话框。——这是个学习方法的问题。在Script的使用中思维是很重要的,如果你不能做到分析、归类和推测的应用,就无法触类旁通,那么你就想不出来通过Script来组合CD的命令和物体能做些什么。 通过Script来组合CD的命令和物体能做些什么?——这是门槛较低的Scrip使用方式。高级的Scrip使用方式是自己编写自己的命令函数,例如我前面提到的3d滤镜,用户只需要输入数值就在后台调用自己定义的命令函数来计算并生成3D物体,然后将物体数据折算成矢量图形的节点数据,这一数据CD能支持,因而CD就能将之绘制在屏幕上。然而这种方法门槛很高,对于大多数人来说可望不可及。所以我对这种使用方法稍带而过,而把“通过Script来组合CD的命令和物体能做些什么”做为重点。
组合CD命令能做什么?——用户在使用CD 绘图时都在使用CD的命令。你如果不能总结出来平时绘图的过程(某些命令+某些命令=某种效果,例如AI的阴影滤镜,其实就是拷贝多一个物体+更改颜色+调换图层+稍微移位。而拷贝、更换颜色、换图层顺序、移位都是Script能调用的命令函数。依此类推。),那么谁都帮不了了。