VAPS XT入门教程12.02.09:基本组(BasicGroups)介绍
系列索引:VAPS XT入门教程索引
上一篇:VAPS XT入门教程12.02.08:动画(Animation)介绍
此控件位于编辑器的Toolbox中的BasicGroups。
AttributesGroup
AttributesGroup可用于将填充和画笔属性设置应用于一组GraphicsPrimitives和/或SVGPrimitives对象。如果组中的对象的FillAttributes和/或PenAttribute设置为inherit,则该组中的对象将继承AttributesGroup设置。
GraphicPrimitives对象没有AttributesGroup定义的所有适用属性。例如,SVGPrimitives具有PenGradient属性,但GraphicsPrimitives没有。
还可以在AttributesGroup对象内使用PenAttributesGroup或FillAttributesGroup来控制一组对象的特定画笔或填充属性。
根据此group的属性界面可以看出这个组控件可以向组内的控件传递颜色、渐变度等等参数。
ClippingRegion
ClippingRegion组定义了一个区域,其对象可以出现在显示中;放置在此区域之外的任何图形对象都不会显示。
可以看到圆的右下角被挡住了看不见
ExtentGroup
ExtentGroup计算新图形的大小,以便它们在使用滚动条时正确移动。ExtentGroup的大小根据其内容而变化。
初始状态,此组内无控件,那么自然就没有大小
添加一个椭圆后
再次添加一个圆后
红框部分就是此组的当前大小和范围
FillAttributesGroup
FillAttributesGroup允许您将某些填充属性设置应用于一组GraphicPrimitives和/或SVGPrimitives对象。如果组中的对象的FillAttributes属性设置为“继承”,则该组中的对象可以由FillAttributesGroup设置控制。
和AttributesGroup相比,FillAttributesGroup可以直接控制子控件
FocusCycleGroup
FocusCycleGroup允许您确定哪个对象在运行时获得焦点。这在构建菜单、弹出菜单、按钮等时非常有用,。。。
InheritanceGroup
InheritanceGroup允许您定义图形对象在显示中可见的状态级别。默认情况下,将图形对象添加到状态时,它在所有状态级别(从顶部状态到最低嵌套状态)的显示中都可见。
在实现中创建一组状态时,放置在这些状态中的任何图形对象都将在所有状态级别可见。
但是,如果需要图形对象仅在特定级别可见,可以创建InheritanceGroup的实例并将图形对象添加到其中。在运行模式下,只有当受影响的状态级别处于活动状态时,图形对象才会出现在显示屏上。
InstanceGroup
编码对象拥有InstanceAllocators子对象的所有权,并在名为Allocators的子部分中显示它们。此外,InstanceAllocator管理的所有实例化对象都显示在名为Instances的子部分中。
在VAPS XT提供的工程示例中,有一个InstanceGroupExample
,介绍如何动态创建页面实例,以及如何动态销毁。
实例
直接编译官方提供的MultiPageExamples就可以了。
默认显示界面占用
PFD界面占用
stores界面占用
engines界面占用
extras界面占用
隐藏
把实例代码改为显示隐藏的代码
默认显示界面占用
PFD界面占用
stores界面占用
engines界面占用
extras界面占用
总结
- 显示隐藏模式必须提供IsVisible功能接口,而实例模式不用
- 显示隐藏模式在运行时所有界面都在绘制,会占用CPU、内存、GPU,而实例模式只有当前显示的实例有
- 可以看到就算是动态实例化,在设计时界面已经有位置在程序中。不允许new操作。
Map2dGroup
Map2dGroup允许您将数字地图放置到显示器中。Map2dGroup定义了相关地图图像将出现的区域,并允许您使用默认显示在中心的interactor将该地图放置在该区域内。
Map2dOverlayGroup
Map2dOverlayGroup允许您将图形图像放置在数字地图中(由Map2dGroup显示)。
使用interactor,您可以选择该图像在地图上叠加的位置,以及调整图像大小和扭曲图像。
MatrixGroup
MatrixGroup由SVG导入器使用,它包含一组复杂的计算,可以重新创建SVG图形布局。
在原始SVG文件中,可以使用矩阵命令复制或转换图形。如果在原始SVG文件中复制了一个对象,则该对象仅作为原始图形的反射而存在。
MutuallyExclusiveGroup
MutuallyExclusiveGroup(相当于VAPS灯光对象)是一个输出对象,最多可以包含65535个子图形对象。每个子对象代表一个不同的状态,该状态可以基于另一个对象的输入值显示(零状态表示没有要显示的对象)。
此组内的控件一次只显示一个,此控件显示后,其他的控件都是不显示状态。
PenAttributesGroup
PenAttributesGroup允许您将特定笔属性设置应用于一组GraphicPrimitives和/或SVGPrimitives对象。如果组中的对象的PenAttributes属性设置为inherit,则该组中的对象可以由PenAttributesGroup设置控制。
可以参考AttributesGroup/FillAttributesGroup
PopUpContext
PopUpContext对象允许您定义一个额外的非窗口弹出上下文,弹出窗口可能会出现在其中。
此组内部的控件可能是弹出窗口
PopUpPart
PopUpPart组允许将弹出功能添加到构建的对象或小部件中。弹出部分中的图形将绘制在所选弹出上下文中其他对象的顶部。
ReorderGroup
ReorderGroup允许在运行时通过调用子对象上的BringToFront()或SendToBack()操作对子对象进行重新排序。
RepeatGroup
在一个界面中重复使用某个组件(比如按钮等),VAPS XT提供了一个RepeatGroup
这个组用于简化开发工作。
当然了,主要是按钮。本文通过此控件实现大批量按钮显示。
1、先准备一个界面
2、向界面中添加RepeatGroup
控件
3、将需要重复的按钮控件添加到RepeatGroup
中,
同时设置一些属性值
4、在界面中添加一个ShortArray
对象,数量为4个,值分别为-80/80/-240/240。它将被用于按钮组中每个按钮的X坐标。
5、在数据流中添加一条数据流,设置重复的次数
1 |
|
.Name是字符串数组,用于在此界面的父界面设置参数
6、设置按钮组中的每个按钮的位置
1 |
|
数据流右侧是按钮组中按钮的位置(x,y)坐标。
先看X坐标,可以看出是循环从IconPosX中获取4个值(只有四个),Y坐标则是新一行向下移动80像素。
那么按钮坐标点为(-80,0)/(80,0)/(-240,0)/(240,0),四个点之后换行(-80,-80)/(80,-80)/(-240,-80)/(240,-80),然后继续。
7、从字符串数组设置按钮名
1 |
|
8、这个数据流和整个工程有关,
1 |
|
将按钮组循环的索引作为按钮所代表的模块索引
9、在父界面点击显示菜单页面,就可以看见正常效果的按钮组
ScaleToFitGroup
ScaleToFitGroup允许您将一组图形对象作为单个单元调整大小。更改该组中对象的比例时,对象不会扭曲:高度和宽度将在调整分组对象的大小时自动调整。
原始图像是正方形,调整此组的长和宽后图并没有变形
SimpleGroup
这个组的主要用途是将组内的所有页面控件整合成一个,这样操作的时候方便一些。比如说,我想隐藏组内的所有页面,只需要把组隐藏就可以了。
没有进行组合前
使用SimpleGroup之后,
红色的点为页面的坐标原点。
StencilGroup
这个组可以将两个控件组合起来实现一个新的控件
墙上开了个洞上了窗户,透过窗户我们可以看到松树和马路,当然松树只是树林的一部分,马路会延伸很远,但是这两个一组合我们就只看见这一小部分。
比如说中间这个姿态仪,可以在前面放个窗,后面放个圆,两个一叠加
TransformGroup
TransformGroup允许您将一组图形对象作为一个单元来调整大小、定位和旋转
下一篇:VAPS XT入门教程12.02.10:基本控件(GraphicPrimitives)介绍
技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导