分享
 
 
 

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

王朝other·作者佚名  2006-11-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能调用的命令函数。依此类推。),那么谁都帮不了了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有