GoJS Beginner Tutorial #1

news2024/9/20 14:52:03

1.关系图:

gojs部件由一个或多个gojs面板组成,这些面板包含和组织各种gojs图形对象

 通常使用go.GraphObject.make创建一个GraphObject,我们通过使用$符号变量缩短了该函数的名称

这个函数的第一个参数,往往是你想要制作的GraphObject的类型,所以如果你想制作一个Shape

第一个参数将是 go.Shape。

所有的GraphObject可以接受一个额外的参数来指定一些属性,

1.例如将字符串作为第二个参数传递给TextBlock构造函数指定为TextBlock GraphObject的默认文本。

2.还可以将 JavaScript 对象作为参数。其中包含描述GraphObject各种属性的键值对 对于图形对象,

 

面板负责保存和组织各种 gojs GraphObject,我们这些组成的GraphObject称之为面板的元素 请注意,

parts 实际上是panel 面板的

panel类型将决定其GraphObject在构建部件时的组织方式

当构建parts或panel你可以将面板类型指定为第二个参数,如果没有指定面板类型,则它充当一个

位置面板

gojs 中有许多panel类型

下面将观察五个最常见的面板类型,看看它们如何排列元素的

---------------------------------------------------------------------------------------------------------------------------------

为了展示这些panel types,我们将使用带有两个元素的part模板

记住part是panel的子类,所以即使你在代码中的任何地方都看不到panel这个词,

part也充当panel并根据我们指定的面板类型组织它的元素,部件作为顶级面板,该部件的所有其他面板都将包含在其中

我们部件构造函数中的第一个参数是与面板类型对应的字符串

接下来的两个是面板元素:部件的第一个元素是一个形状,我们使用其第二个参数进行设置它的图形

我们将在整个视频中,我们将使用RoundedRectangle图作为我们的Shape。

第二个元素是一个TextBlock,我们使用第二个参数设置其文本

另外我们可以在options数据对象参数提供一些关于Part元素属性的一些信息

比如:这里为我们的形状设置了填充属性,我们将为这些元素设置其他属性,以便对常用属性进行更深入的讨论,请先查看我们的视频 gojs GraphObject属性,

每个元素的位置由为每个图形对象元素指定的位置属性确定,如果没有定义位置属性,元素

位于 (0,0), 所有位置都在面板自己的坐标系位置内, 可能包括负坐标.

 --------------------------------------------------------------------------------------------------------------------------------

首先确保

我们的面板类型是位置我们将

通过定位文本块元素来检查此面板类型的工作方式

现在让我们不为

我们的文本块提供位置值看看我们有

什么 形状和文本块出现

在面板的左上角,这

是有道理的,因为默认位置是 0

0

现在让我们继续并将

文本块的位置属性设置为新的

Godot 点值,比如 50 20 现在看

文本 块出现在右上角 50 像素

和左上角下方 20 像素处,

当前充当 0 0

我们可以类似地定位形状让我们将

其位置属性设置为

负 50 20 现在看起来形状

出现在左 50 像素和 20

像素 从 0 0 向下 注意 0 0 不再是

左上角 记住

元素都位于 0 0 附近

位置面板将始终包含 0

0 原点 位置面板的

元素的集体边界不

包括 0 0 总是扩展到

包括我们刚刚看到的原点让我们

检查垂直面板它

从上到下垂直排列其元素

每个元素保持其正常

高度和宽度除非它的拉伸

属性已设置在这种情况下它将被

赋予宽度 面板如果

元素宽度与

面板的宽度不同,则

根据其对齐

属性水平对齐让我们使用我们的模板并制作

一个垂直面板让我们也将

文本块的背景设置为浅

灰色以便我们可以看到

文本块元素的尺寸而不改变

任何其他让我们看看会发生什么

文本块堆叠在形状下方

文本块

使用其对齐属性水平定位

因为我们没有为

文本块分配对齐方式它默认为 spot

default 它让面板确定

如何对齐元素,在这种情况下,它

默认为中心水平

对齐,以更改

垂直面板内元素的对齐设置,

元素对齐属性让我们将

我们的文本块对齐属性设置为

Godot spa 现在让我们看看 在

我们所拥有的文本块

水平放置在面板右侧

注意文本块的浅灰色背景

它向我们展示文本

块只占用

其文本所需的空间元素

已分配给它们 我们

可以看到文本块的默认大小具有

文本的宽度并且不会

水平拉伸以填充面板以更改

此设置文本块的拉伸属性

以进行图形对象点填充

现在看起来文本块占据了

整个 面板的宽度,但

它的对齐发生了什么,它不应该

仍然在右边文本块

本身已经被拉伸以填充

面板的整个宽度因此它的

对齐不再是其外观的一个因素

但是如果我们想要

文本块的文本仍然出现在

右侧 我们需要修改一个

名为文本对齐的文本块特定属性 让我们这样做 将

文本对齐

属性设置为字符串 现在重新加载

页面,同时文本块元素

本身仍然完全拉伸 为了

水平填充面板,它的文本

与右侧对齐 接下来是

水平面板 它的元素

从左到右水平排列

它们可以垂直拉伸以适应具有

拉伸属性的面板高度

我们将使用我们的模板 并

再次使面板成为水平面板 我们将

文本块元素的背景设置

为浅灰色,以便更容易地看到

文本块尺寸而不做

任何其他事情看看我们有什么

文本块的对齐方式是

自动设置的,因为我们 没有

在文本块属性中设置它如果我们

想自己设置它我们可以尝试

设置对齐属性去

点底部现在看文本块

在面板底部对齐

同样我们可以看到文本块只

需要 通过观察浅灰色背景来增加其文本所需的空间

假设我们希望文本块填充

面板的整个高度 我们必须为文本块设置的

拉伸属性设置一个值

stretch to go graph

object fills should work 请注意,

即使我们已经将文本块的对齐方式设置为 Godot spot bottom,设置 stretch 基本上会覆盖您为

水平面板中的元素

设置的对齐方式,

然后我们将

stretch 设置为 go graph object fill 因此

其文本中的文本块仍然 出现

在面板的顶部如果我们想

强制文本块出现在

面板的底部我们可以将其

垂直对齐属性设置为 Godot

底部然后真实

页面即使文本块

拉伸属性设置为 go graph

对象 通过将其垂直

对齐属性设置为 spot bottom 来填充

文本块文本出现在

面板的底部 让我们讨论

最后两种常见类型的面板 spot 和

auto 当使用 spot 或 auto 面板时

我们面板中的第一个元素 如果

形状元素充当

面板的主要元素,所有

后续元素都根据

面板类型定义的规则排列

在面板中的第一个元素默认被视为

主要元素,但您可以将

另一个元素设置为 panel main

元素通过将该元素的 is panel main

属性设置为 true 到目前为止,我们已经

使用了一些预设的 Godot 点值,

例如 go spot left 和 Godot spot center 来

设置该视频中的元素对齐方式,

但点可以远远超过

只有一组预定值

点中的一个包含 X 和 y 值,

范围在 0 到 1 之间,这些值

是沿 x

和 y 轴距矩形左上角的分数距离,

例如图形对象的边界

元素 所以预设的 godot spot

左上角与新的 godot spot

0/0 spot 右下角与新的

godot spot 1:1 相同 现在让我们检查

spot 面板 我们将使用相同的模板

并设置面板类型 spot 让我们将

文本块的对齐方式设置为 go

spot top left 看看文本块

位于

形状的左上角 面板的主要元素如

之前所述 spot 面板中的所有元素都

放置在它们的对齐点

相对于我们案例中的主要元素

形状元素,您可能会注意到

文本块的位置使其

中心点位于面板的左上角,

这是因为

对齐焦点属性的默认

值为 godot spot Center 我们' 稍后将

详细讨论这个问题,现在将

值从左上角的 go spot 更改

为新的 go spot zero zero 再看一次,它是

相同的记住一个点的 x 和 y 值

我们传递给

godot spot

指导员的两个参数对应 距

矩形左上角的分数距离 在这种情况下

描述面板边界的矩形

主要元素 形状

进一步明确这一点 让我们将

文本块对齐到

形状的右侧并向下对齐 如何

我们会做得好吗,因为我们想

从形状边界的最左侧一直走到最

右侧,

我们将把戈多点构造函数的 X 参数更改

为 1,因为我们

想沿着形状向下走一半 将

Y 参数设置为 0.5 现在看看

我们有什么 文本块位于

形状的中间位置

一直在其右侧

点可以更好地描述

元素对齐 戈多点

构造函数需要两个参数,它

可以选择 再取两个

描述元素对齐的绝对 X&Y 偏移量(以像素为单位)

使用我们的

示例,如果我们向点构造函数添加负 20 和零,则

文本块

将像以前一样位于最右侧的中间位置,

向左增加 20 像素 进一步查看

spot 面板中的每个非主要元素,

默认情况下定位的精确点是

元素中心的 godot spot center

将用于定位它但是

我们可以使用

上述对齐焦点属性更改它

所以在我们的 当我们将

文本块的对齐方式设置为

左上角的 godot spot 时的原始图表我们没有指定

对齐焦点

如果我们将

文本块的对齐方式保持为

Godot spot top left 但将

文本块的对齐焦点属性更改

为新的 spot 值让我们看看会发生什么让

我们尝试 Godot spot top left 现在重新加载

页面文本块的对齐方式

不同现在它的对齐属性

指的是 面板,

但它的对齐聚焦属性

是定位元素的点,它

与对齐属性指定的主元素中的点对齐,

更改了

文本块的左上角最后我们

来到自动面板,自动面板

适合 面板的所有

其他元素周围的面板的主要元素请记住,

默认情况下主要元素是

面板的第一个元素,但您可以通过将

其 is panel main

属性设置为 true 来手动将元素设置为主要元素,因为自动面板

主要 元素至少需要一个其他

元素来测量以确定

它需要多大来容纳所有元素

自动面板应该至少有两个

元素使用我们相同的模板将

面板类型设置为自动看看

我们有什么文本 块被

形状包围,因为形状是

自动面板的主要元素主要

元素的大小适合非

主要元素如果调整非主要元素的大小

主要元素将调整大小

以适应非主要元素

本质上自动 默认情况下,面板是如何在

其他一些对象周围实现边框的,

如果我们

明确设置整个自动面板的大小,则该边框刚好足以容纳

自动面板的非主要元素,非主要元素的

空间比

如果我们将

自动面板的所需大小属性设置为

250 x 250 的新大小,他们自然会这样做,然后我们重新加载

页面,我们看到文本块周围的空间,

我们唯一的非主要元素

变大了,请不要设置大小

自动面板的主要元素 它的大小以

编程方式确定 您可以

组合任意数量的面板

创建任意复杂的部件

自动面板中的水平面板,

用于深入了解组合

各种面板和图形对象以

创建复杂部件 观看我们的视频

构建部件与 gojs 模板

go Jas net 如果您

有兴趣了解更多

关于部件和面板类型的信息,请访问

我们在 go Jas net 上的面板介绍页面,

该页面将提供有关

本视频中讨论的面板类型

以及一些不太常见的面板类型的更多信息,

例如 分级网格和表格面板 下

一个推荐的视频是 go Jay

图模型,它解释了如何将简单

数据存储在图模型中,

稍后通过图将其可视化。前往

gojs net 查看数百个

样本,关于 go J 的功能

介绍页面或仔细阅读完整的

API 文档注册

无限次免费试用,您将免费获得 30

天的开发人员对开发人员的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sentinel同时配置fallback和blockHandler的问题

Spring Cloud在使用Sentinel进行服务降级和熔断时,如果同时配置了fallback和blockHandler,则在服务熔断后,抛出的BlockException不会再fallback逻辑中执行,而是在blockHandler逻辑中执行。 首先来看只配置了fallback的情况&#x…

Python文件管理【open和with open的使用】

一、文件的操作步骤 基本都是三个步骤: 打开文件、读写文件、关闭文件 1.open()函数 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件,语法如下: open(name,mode) name&#xff…

LeafLet加载自定义Legend的设计与实现

背景 众所周知,在GIS的世界里,图例和地图永远是一对一起出现的对象。在地图上表示地理环境各要素,比如山脉、河流、城市、铁路等所用的符号叫做图例。这些符号所表示的意义,常注明在地图的边角上。图例是表达地图内容的基本形式和…

引用与指针:在C++中如何做出正确的选择?

文章目录 前言1. 引用入门2. 引用作为函数传参3. 引用作为函数返回值4. 引用和指针5. 其他区别 前言 引用是 C 的新增内容,在实际开发中会经常使用,它就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的…

使用YOLOV5-6.2预训练模型(yolov5s)进行detect的详细说明(detect.py)文件解析

目录 准备源文件和预训练文件下载python版本以及torch版本说明:文件目录说明测试文件 detect.py使用测试单张图片测试一个文件夹里的图片 准备 源文件和预训练文件下载 下载链接:https://github.com/ultralytics/yolov5/releases/tag/v6.2 源文件和预训…

数据科学与机器学习在软件开发中的应用

数据科学和机器学习是现代软件开发的重要组成部分,可以帮助开发人员更好地理解和分析数据,从而提高软件的质量和性能。在本篇博客中,我将深入探讨数据科学和机器学习在软件开发中的应用,并讨论它们如何帮助我们创建更好的软件。 …

你最想知道的APP自动化测试项目实战详解

目录 一、引言 二、APP自动化测试的基本概念 三、APP自动化测试的流程 四、APP自动化测试的最佳实践 五、常见的APP自动化测试工具 六、APP自动化测试的挑战和解决方案 七、结论 一、引言 随着移动设备的普及和应用市场的繁荣,越来越多的企业开始开发和发布移…

【手撕MyBatis源码】执行器与缓存

文章目录 概述执行器(Executor)执行器总结 缓存MyBatis缓存概述一级缓存(LocalCache)Spring集成MyBatis后一级缓存失效的问题二级缓存二级缓存组件结构二级缓存的使用为什么要提交之后才能命中二级缓存?二级缓存结构二级缓存执行流程 概述 通过一条修改语句,我们来…

Android 开发死磕性能优化,方向是否正确?

在 Android 开发者技能中,如果想进大厂,一般拥有较好的学历可能有优势一些。 但是如果你靠硬实力也是有机会的,例如死磕性能优化,成为一名Android性能优化的高手,也算是目前招聘过程中比较稀缺的人才,可以…

Maven安装及其原理

一、maven安装 maven 3.6.1的安装包如下 二、配置本地仓库和阿里云私服 打开在上述百度网盘下载的文件,打开conf下面的setting.xml,大概第55行增加如下代码 ,意思是指定一个目录为本地jar包的文件夹,管理jar包。一般来说&…

C++位图

位图 文章目录 位图setResetTest整体代码位图应用 给定40亿个不重复、没排序的无符号整数,再给一个无符号整数,如何快速判断一个数是否在这40亿个数中???首先想到的是归并排序二分查找。排序可以排,但是通过…

【计算机组成原理】第三章 存储系统

文章目录 知识体系3.1 存储器概述3.1.1 存储器的分类3.1.2 存储器的性能指标3.1.3 多级层次的存储系统 3.2 主存储器3.2.1 SRAM芯片和DRAM芯片3.2.2 只读存储器3.2.3 主存储器的基本组成3.2.4 多模块存储器 3.3 主存储器与CPU的连接3.3.1 连接原理3.3.2 主存容量的扩展3.3.3 存…

指定GPU运行python程序

一、命令行运行python程序时 1、首先查看哪些GPU空闲,nvidia-smi显示当前GPU使用情况。 nvidia-smiGPU:编号,这里是0和1 Fan:风扇转速,在0到100%之间变动,第一个是29% Name:显卡名&#xff…

布署到centos7.9时,ModuleNotFoundError: No module named ‘_sqlite3‘

先下载编译sqlite3 wget http://www.sqlite.org/sqlite-3.5.6.tar.gz cd sqlite-3.5.6 ./configure --disable-tcl make && make install 注意add LIBDIR to the ‘LD_LIBRARY_PATH’ environment variable,这是sqlite建议添加环境变量。 所以: echo expor…

「C/C++」C/C++异常处理

博客主页:何曾参静谧的博客 文章专栏:「C/C」C/C学习 目录 相关术语一、C语言中的异常处理1.返回值来传递错误信息2.使用标准库函数对异常进行处理(不推荐)3.使用全局变量来记录错误信息(不推荐) 二、C中的异常处理1.try{}catch()…

内外部函数静态变量全局变量

1、函数(封装、复用) 功能性:最基本的特性; 扩展性:对于时刻变化的需求易于扩展; 维护性:对于时刻变化的需求易于维护,易于编码变更; 封装性:不要把所有的代…

G1回收器:区域化分代式

G1回收器概述 既然我们己经有了前面几个强大的GC,为什么还要发布Garbage First(G1)GC? 原因就在于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序正常进行,而经常造成STW的GC又跟不上实际的需求&#xff0c…

Python 实验四 常用数据结构(1)

1.从键盘输入一个正整数列表,以一1结束,分别计算列表中奇数和偶数的和。 n int(input("请输入一个正整数:")) list [] while n ! -1:list.append(n)n int(input("请输入一个正整数:")) else:print("…

Linux下C/C++实现(网络流量分析-NTA)

网络流量分析(NTA - Network Traffic Analysis) 就是捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量、分析、统计等,协助发现网络运行过程中出现的问题。通过监控和分析网络环境中的流量,来判断流量是用在…

electron编译环境搭建和第一个桌面应用例子

前言 Electron是基于Chromium和Node.js实现的,所以开发人员所需要使用到的前端技术主要包括以下方面: 1、Html、CSS、JavaScript、ES6 2、前端开发工具Vue、Angular、React等的一种 3、其他网络、缓存、通讯、系统、跟踪等前端技术 4、对Vscode编辑…