Age: 脚本图形项






4.81/5 (11投票s)
AGE 引擎的 ScriptedItem 和 ScriptAge 简介。
引言
本文解释了如何使用 ScriptAge 来定义一个 AGE 图形引擎 的脚本化项目。
背景
AGE 从 1.4 版本开始引入了 ScriptedItem
类和 ScriptAge 的概念,这是一种简单的脚本语言,允许您定义图形项目,而无需编译它。
现在我将解释如何使用脚本化项目进行绘制,您会发现它非常简单有趣。让我们画一棵小树。

步骤 1:我们需要什么
画布文档中的 ScriptedItem
对象。
// c#
using NeoDataType.Graphic;
...
ScriptedItem item = new ScriptedItem();
canvas1.Document = new GraphicDocument();
canvas1.Document.Add(item);
将脚本分配给该项目。
item.Script = scriptText;
步骤 2:脚本文本
我将在下一段解释 ScriptAge 语法,现在让我们看看代码。

stroke: Ellipse
pen: green, 1!
brush: gradient, lightgreen, green, (.2; 0.4)(.7;.6)
points: (.2; 0.4)(.7;.6)
stroke: Curves, 0.5!
pen: brown, 1!
brush: gradient, gold, brown, (0.3; .5)(0.7; .5)
points: (.35; 1)(.42;.8)(.42; .3)(.5; .55)(.58; .3)(.58;.8)(.65; 1)
stroke: Ellipse
pen: green, 1!
brush: gradient, lightgreen, green, (.5; 0.2)(1;.6)
points: (.5; 0.2)(1;.55)
stroke: Ellipse
pen: green, 1!
brush: gradient, lightgreen, green, (0.2; 0)(.8;.5)
points: (0.2; 0)(.8;.5)
stroke: Ellipse
pen: green, 1!
brush: gradient, lightgreen, green, (0; .2)(.5; .5)
points: (0; 0.2)(.5;.5)
ScriptAge 语法
脚本引擎使用具有以下语法的命令:
token: param1[, param2[...]]
参数以逗号分隔,每个 token 定义其自身接受的参数。
识别的 token 是
stroke: stroke_type, type_parameters_list
stroke_type
可以是以下 string
值之一
椭圆
Polygon
Lines
曲线
矩形
RoundRectangle
(尚未实现)Point
Arc
pen: pen_color, pen_width
brush: brush_type, brush_parameters_list
brush_type
可以是以下 string
值之一
solid
渐变
points: points_list
points_list
是一个或多个点的列表,定义为 (x; y)
,
例如 (0.1; 100!) (10#; .5) (0.5; 1)
所有颜色值都将读取为 HTML 颜色代码。
这意味着颜色可以命名为 red
、green
或 blue
,也可以编码为 #FF0000
、#00FF00
或 #0000FF
。
可以使用两个额外的数字添加透明度:#50FF0000
。
所有数字值都读取为 stroke_number
。stroke_number
是一个数字,定义如下,其中 n
是一个任意数字
n |
一个数字,指示项目大小因子中的度量,如 “Age: Write Your Custom Graphic Library” 的步骤 3 中所述。 |
n! |
一个数字,指示从画布原点以像素为单位的度量。 |
n# |
一个数字,指示从项目原点以像素为单位的度量。 |
例如,在以下图像中,点 Pb
可以描述为
- (0.2; 0.4) x = 项目宽度的 1/5,y = 项目高度的 2/5
- (130!; 90!) x = 距画布原点 130 像素,y = 距画布原点 90 像素
- (30#; 40#) x = 距项目原点 30 像素,y = 距项目原点 40 像素
请注意,以 n!
形式表示的 stroke_number
的结果值永远不会改变,因为 n
随项目大小和位置而变化,并且 n#
随项目位置而变化。
另请注意,一个点可以是所有这些表示法的组合。
有关 ScriptAge 语法的详尽描述,请参阅我的网站。
您如何贡献?
如果您认为本文和发布的项目有趣和/或有用,您可以通过多种方式帮助我保持其活跃
- 向我发送您的项目脚本 (我将使用您的凭据发布)
- 告诉我这篇文章是否清楚或缺少什么
- 为本文投票
- 访问 我的网站
- 访问我的网站并做出一点贡献(这将是一个很大的激励)
历史
- 2007 年 1 月 13 日:首次发布