从标准数据饼图初步看CorelDraw的另一种用法


来源:   

原作者:离弦小刀 出处:5D多媒体
发表时间:2004-3-23 关键词:
版权信息:传统媒体及商业网站禁止擅自转载;个人网站转载需经作者同意,并注明作者及出处。

 

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

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

  

  

  在这一点上,使用什么矢量软件并无差别。

  需要有Excel一样的输入界面——这么个界面就是所谓的“人机对话”。之所以要有人机对话,因为人不懂机器的语言,机器不懂人的语言。所以绘图软件就设立了很多可视性的界面。隐藏在“人机对话”后面的就是机器听得懂的语言。
  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拷贝。

  

  绘制一正圆,快速拷贝多四份,然后居中对齐。
  
  

  

  在“扇形终点”中输入“0”,在“扇形起点”输入“50/”,然后Crtl+V,实际上“扇形起点”中的输入值为“50/(50+20+10+5+2)*360”。然后你得到下面图形:

  

  

  第二个物体的终点为第一个物体的起点,所以是“50/(50+20+10+5+2)*360”,起点是“(20+50)/(50+20+10+5+2)*360”,依此类推,就得到了所有的物体。

  

  这是一个很笨的方法,每次都直接手动告诉CD要算什么。但这只是开始。

  我在这个例子中频繁的使用计算公式,这个绘图的过程是完全可以以Script的形式写出来的,因为CD9的Script是纯文本格式的。

  一个饼图的数据如下:
  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能调用的命令函数。依此类推。),那么谁都帮不了了。

编辑:

相关内容

 娱乐专题

more...

高峰私生子

王伯昭被打

傅彪肝癌晚期

赵薇餐馆打人事件

《云南映象》图集

张铁林拖欠中介费

女医生状告赵忠祥

高虎被捕事件

演绎经典美丽

解读《十面埋伏》

揭示明星美丽秘诀

五颜六色娱乐圈

明星纤体大比拼

《绿茶》精彩影评

天地英雄

吕丽萍群星艺术学校被起诉

于娜出道前被包养是真是假?

香港英皇贪污丑闻追踪

多少明星追忆中

2003环球小姐大赛

 

 叨叨专栏

more...

冯小刚,你怎么敢抽"上帝"?

流氓与流氓

娱乐媒体,请站直一点

原来张铁林不是中国人!

《神雕侠侣》的悲惨前途

男人,要硬派不要阴柔

请不要随便脱裤子

李欣,《自娱自乐》的挺滋儿!

不服没用,人家就是红了!

陆毅演戏吧,别唱歌了。

 

 

 
报业集团
- 版权声明 - 广告业务 - 联系方式
Copyright (C) 2001-2002 dzwww.com. All Rights Reserved
大众报业集团网络中心主办
Email:webmaster@mail.dzdaily.com.cn