VAPS XT入门教程12.02.09:基本组(BasicGroups)介绍

系列索引:VAPS XT入门教程索引

上一篇:VAPS XT入门教程12.02.08:动画(Animation)介绍

此控件位于编辑器的Toolbox中的BasicGroups。

groups

AttributesGroup

AttributesGroup可用于将填充和画笔属性设置应用于一组GraphicsPrimitives和/或SVGPrimitives对象。如果组中的对象的FillAttributes和/或PenAttribute设置为inherit,则该组中的对象将继承AttributesGroup设置。

GraphicPrimitives对象没有AttributesGroup定义的所有适用属性。例如,SVGPrimitives具有PenGradient属性,但GraphicsPrimitives没有。

还可以在AttributesGroup对象内使用PenAttributesGroup或FillAttributesGroup来控制一组对象的特定画笔或填充属性。

attributegroup

根据此group的属性界面可以看出这个组控件可以向组内的控件传递颜色、渐变度等等参数。

ClippingRegion

ClippingRegion组定义了一个区域,其对象可以出现在显示中;放置在此区域之外的任何图形对象都不会显示。

clipping

可以看到圆的右下角被挡住了看不见

ExtentGroup

ExtentGroup计算新图形的大小,以便它们在使用滚动条时正确移动。ExtentGroup的大小根据其内容而变化。

初始状态,此组内无控件,那么自然就没有大小

添加一个椭圆后

ecllipse

再次添加一个圆后

circle

红框部分就是此组的当前大小和范围

FillAttributesGroup

FillAttributesGroup允许您将某些填充属性设置应用于一组GraphicPrimitives和/或SVGPrimitives对象。如果组中的对象的FillAttributes属性设置为“继承”,则该组中的对象可以由FillAttributesGroup设置控制。

和AttributesGroup相比,FillAttributesGroup可以直接控制子控件

FocusCycleGroup

FocusCycleGroup允许您确定哪个对象在运行时获得焦点。这在构建菜单、弹出菜单、按钮等时非常有用,。。。

InheritanceGroup

InheritanceGroup允许您定义图形对象在显示中可见的状态级别。默认情况下,将图形对象添加到状态时,它在所有状态级别(从顶部状态到最低嵌套状态)的显示中都可见。

在实现中创建一组状态时,放置在这些状态中的任何图形对象都将在所有状态级别可见。

但是,如果需要图形对象仅在特定级别可见,可以创建InheritanceGroup的实例并将图形对象添加到其中。在运行模式下,只有当受影响的状态级别处于活动状态时,图形对象才会出现在显示屏上。

InstanceGroup

编码对象拥有InstanceAllocators子对象的所有权,并在名为Allocators的子部分中显示它们。此外,InstanceAllocator管理的所有实例化对象都显示在名为Instances的子部分中。

在VAPS XT提供的工程示例中,有一个InstanceGroupExample,介绍如何动态创建页面实例,以及如何动态销毁。

实例

直接编译官方提供的MultiPageExamples就可以了。

默认显示界面占用

default

PFD界面占用

pfd

stores界面占用

stores

engines界面占用

engines

extras界面占用

extras

隐藏

把实例代码改为显示隐藏的代码

默认显示界面占用

default

PFD界面占用

pfd

stores界面占用

stores

engines界面占用

engines

extras界面占用

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、先准备一个界面

default

2、向界面中添加RepeatGroup控件

add

3、将需要重复的按钮控件添加到RepeatGroup中,

btn

同时设置一些属性值

4、在界面中添加一个ShortArray对象,数量为4个,值分别为-80/80/-240/240。它将被用于按钮组中每个按钮的X坐标。

5、在数据流中添加一条数据流,设置重复的次数

1
.Name.Size	-> IconRep.RepeatCount	

.Name是字符串数组,用于在此界面的父界面设置参数

6、设置按钮组中的每个按钮的位置

1
2
IconPosX.Element[IconRep.LoopIndex % 4]	-> Icon.Position.X	
(IconRep.LoopIndex / 4) * (-80) -> Icon.Position.Y

数据流右侧是按钮组中按钮的位置(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
.Name[IconRep.LoopIndex]	-> Icon.Name	

8、这个数据流和整个工程有关,

1
IconRep.LoopIndex	-> Icon.ModuleIndex	

将按钮组循环的索引作为按钮所代表的模块索引

9、在父界面点击显示菜单页面,就可以看见正常效果的按钮组

result1

ScaleToFitGroup

ScaleToFitGroup允许您将一组图形对象作为单个单元调整大小。更改该组中对象的比例时,对象不会扭曲:高度和宽度将在调整分组对象的大小时自动调整。

scale2fitgroup

原始图像是正方形,调整此组的长和宽后图并没有变形

SimpleGroup

这个组的主要用途是将组内的所有页面控件整合成一个,这样操作的时候方便一些。比如说,我想隐藏组内的所有页面,只需要把组隐藏就可以了。

没有进行组合前

before

使用SimpleGroup之后,

simplegroup

红色的点为页面的坐标原点。

StencilGroup

这个组可以将两个控件组合起来实现一个新的控件

stencilgroup

墙上开了个洞上了窗户,透过窗户我们可以看到松树和马路,当然松树只是树林的一部分,马路会延伸很远,但是这两个一组合我们就只看见这一小部分。

example

比如说中间这个姿态仪,可以在前面放个窗,后面放个圆,两个一叠加

TransformGroup

TransformGroup允许您将一组图形对象作为一个单元来调整大小、定位和旋转

下一篇:VAPS XT入门教程12.02.10:基本控件(GraphicPrimitives)介绍

技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导

qq 672991841


VAPS XT入门教程12.02.09:基本组(BasicGroups)介绍
https://feater.top/vapsxt/introduction-of-vapsxt-group/
作者
JackeyLea
发布于
2021年10月19日
许可协议