65.9K
CodeProject 正在变化。 阅读更多。
Home

Age: 脚本图形项

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (11投票s)

2007年1月13日

CPOL

3分钟阅读

viewsIcon

33751

downloadIcon

417

AGE 引擎的 ScriptedItem 和 ScriptAge 简介。

引言

本文解释了如何使用 ScriptAge 来定义一个 AGE 图形引擎 的脚本化项目。

背景

AGE 从 1.4 版本开始引入了 ScriptedItem 类和 ScriptAge 的概念,这是一种简单的脚本语言,允许您定义图形项目,而无需编译它。

现在我将解释如何使用脚本化项目进行绘制,您会发现它非常简单有趣。让我们画一棵小树。

Sample Image - age_scripted_item_1.png

步骤 1:我们需要什么

画布文档中的 ScriptedItem 对象。

// c#
using NeoDataType.Graphic;
...
ScriptedItem item = new ScriptedItem();
canvas1.Document = new GraphicDocument();
canvas1.Document.Add(item);

将脚本分配给该项目。

item.Script = scriptText;

步骤 2:脚本文本

我将在下一段解释 ScriptAge 语法,现在让我们看看代码。

Sample Image - age_scripted_item_2.png
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 颜色代码。
这意味着颜色可以命名为 redgreenblue,也可以编码为 #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 像素

Sample Image - age_scripted_item_3.png

请注意,以 n! 形式表示的 stroke_number 的结果值永远不会改变,因为 n 随项目大小和位置而变化,并且 n# 随项目位置而变化。

另请注意,一个点可以是所有这些表示法的组合。
有关 ScriptAge 语法的详尽描述,请参阅我的网站

您如何贡献?

如果您认为本文和发布的项目有趣和/或有用,您可以通过多种方式帮助我保持其活跃

  • 向我发送您的项目脚本 (我将使用您的凭据发布)
  • 告诉我这篇文章是否清楚或缺少什么
  • 为本文投票
  • 访问 我的网站
  • 访问我的网站并做出一点贡献(这将是一个很大的激励)

历史

  • 2007 年 1 月 13 日:首次发布
© . All rights reserved.