GoJS创建分级面板(一)

Wesley13
• 阅读 671

在“刻度”面板,Panel.Graduated,平定期刻度/文字标签沿主子图的行程形状。刻度面板可以视为显示一系列值的比例尺。

有关刻度面板的示例,请参见时间线, 温度计, 仪表规和标尺图示例。

简单的分级面板

类似于自动面板和现场面板,渐变面板中应包含两个或多个元素。元素必须是Shape或TextBlock。可以通过将GraphObject.isPanelMain设置为true 来声明主要的Shape元素。但是如果它是面板的第一个元素,则无需进行此类设置。除了主要Shape之外,Shape和TextBlocks基本上充当绘制每个刻度线和标签的模板。

刻度标记形状秒的刻度面板内应具有测量大小,通过设置一个GraphObject.desiredSize (或width和height属性),或通过设置其Shape.geometry。对于描绘的常态的主要形状的路径基本刻度标记,它是最容易使用的一个简单的垂直线的几何形状字符串:M0 0 V10。几何图形的高度将确定刻度线的长度。

diagram.add( // all Parts are Panels $(go.Part, go.Panel.Graduated, // or "Graduated" $(go.Shape, { geometryString: "M0 0 H400" }), // the main shape, a horizontal line $(go.Shape, { geometryString: "M0 0 V10" }) // a tick mark, a vertical line ));

GoJS创建分级面板(一)

任何形状(包括自定义几何形状)都可以用作渐变面板的主要形状或刻度线形状。

diagram.add( $(go.Part, "Graduated", { background: "transparent" }, // make panel pickable // main shape is a whole circle $(go.Shape, "Circle", { fill: null, desiredSize: new go.Size(150, 150) }), // tick shape is a double line $(go.Shape, { geometryString: "M0 0 V10 M3 0 V10" }) ));

GoJS创建分级面板(一)

刻度面板也可以用TextBlocks标记,表示沿比例尺的值。通常,它们将使用GraphObject.segmentOffset与主笔画偏移,就像使用Link标签时那样,以便文本不会与主笔画重叠。有关放置标签的更多详细信息,请参见下面的“外观”部分。

diagram.add( $(go.Part, "Graduated", { background: "transparent" }, // make panel pickable $(go.Shape, { geometryString: "M0 0 H400" }), // the main shape $(go.TextBlock, { segmentOffset: new go.Point(0, 12) }) // tick labels ));

GoJS创建分级面板(一)

分级面板属性

有许多属性可以控制刻度线和标签的外观。

刻度线值

从主要形状的笔触的开始到笔划的结束,“刻度面板”的刻度值将在线性范围内变化。刻度线和标签的值和频率由一些属性控制:

  • Panel.graduatedMin-刻度上 的最小值,在主形状的笔触开始时
  • Panel.graduatedMax-刻度上 的最大值,位于主形状的末尾
  • Panel.graduatedTickBase- “原始”刻度线的值,如果它与刻度相同,则是第一个刻度线
  • Panel.graduatedTickUnit- 刻度线位于添加到gradientTickBase的gradientdTickUnit的倍数处
  • Shape.interval / TextBlock.interval- 在其上绘制刻度或标签的gradientTickUnit的倍数

带刻度的面板可以具有多个形状作为刻度线,而多个TextBlocks作为标签,interval属性控制graduatedTickUnit绘制它们的倍数。在下面的许多示例中,以4的间隔绘制较大的刻度线。有些间隔为5。

graduatedMinof 0,graduatedMaxof 77, graduatedTickBaseof 0,graduatedTickUnitof 2.5和4的间隔可能会显示为:

diagram.add( $(go.Part, "Graduated", { graduatedMin: 0, graduatedMax: 77, graduatedTickBase: 0, graduatedTickUnit: 2.5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H400" }), // the main Shape // a short, frequent tick mark $(go.Shape, { geometryString: "M0 0 V5" }), // a longer tick mark every four ticks $(go.Shape, { geometryString: "M0 0 V10", interval: 4 }), // text label only every four ticks, with a vertical offset $(go.TextBlock, { segmentOffset: new go.Point(0, 12), interval: 4 }) ));

GoJS创建分级面板(一)

改graduatedMin为-23结果为:

diagram.add( $(go.Part, "Graduated", { graduatedMin: -23, graduatedMax: 77, graduatedTickBase: 0, graduatedTickUnit: 2.5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H400" }), // the main Shape $(go.Shape, { geometryString: "M0 0 V5" }), // short tick mark $(go.Shape, { geometryString: "M0 0 V10", interval: 4 }), // long tick mark $(go.TextBlock, { segmentOffset: new go.Point(0, 12), interval: 4 }) // labels ));

GoJS创建分级面板(一)

最小值到最大值(Panel.graduatedRange)的范围已从77增加到100,因此对于相同长度的主路径,刻度线彼此靠近。

更改graduatedTickBase为1.2结果为:

diagram.add( $(go.Part, "Graduated", { graduatedMin: -23, graduatedMax: 77, graduatedTickBase: 1.2, graduatedTickUnit: 2.5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H400" }), // the main Shape $(go.Shape, { geometryString: "M0 0 V5" }), // short tick mark $(go.Shape, { geometryString: "M0 0 V10", interval: 4 }), // long tick mark $(go.TextBlock, { segmentOffset: new go.Point(0, 12), interval: 4 }) // labels ));

GoJS创建分级面板(一)

基本上,标尺的“原点”已略有偏移,即使最终值保持不变。graduatedTickBase 如果该值在刻度范围内,则始终会出现一个刻度线。

将的值加倍graduatedTickUnit会5导致:

diagram.add( $(go.Part, "Graduated", { graduatedMin: -23, graduatedMax: 77, graduatedTickBase: 1.2, graduatedTickUnit: 5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H400" }), $(go.Shape, { geometryString: "M0 0 V5" }), // short tick mark $(go.Shape, { geometryString: "M0 0 V10", interval: 4 }), // long tick mark $(go.TextBlock, { segmentOffset: new go.Point(0, 12), interval: 4 }) // labels ));

GoJS创建分级面板(一)

将滴答单位加倍会使相同长度路径的滴答声数量减半,但最终值仍保持不变。

改graduatedTickBase回0和将间隔更改为5:

diagram.add( $(go.Part, "Graduated", { graduatedMin: -23, graduatedMax: 77, graduatedTickBase: 0, graduatedTickUnit: 5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H400" }), $(go.Shape, { geometryString: "M0 0 V5" }), // short tick mark $(go.Shape, { geometryString: "M0 0 V10", interval: 5 }), // long tick mark $(go.TextBlock, { interval: 5, segmentOffset: new go.Point(0, 12) }) ));

GoJS创建分级面板(一)

您可以有多个标签。例如,小文本比大文本更频繁:

diagram.add( $(go.Part, "Graduated", { graduatedMin: 0, graduatedMax: 140, graduatedTickBase: 0, graduatedTickUnit: 5, background: "transparent" }, $(go.Shape, { geometryString: "M0 0 H450" }), // longer line $(go.Shape, { geometryString: "M0 0 V5" }), $(go.Shape, { geometryString: "M0 0 V10", interval: 4 }), // minor label $(go.TextBlock, { interval: 2, segmentOffset: new go.Point(0, 8), stroke: "blue", font: "7pt sans-serif" }), // major label $(go.TextBlock, { interval: 4, segmentOffset: new go.Point(0, 12), stroke: "red", font: "bold 12pt sans-serif" }) ));

GoJS创建分级面板(一)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
10 个超好看可视化面板
Web开发中几乎所有平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费的控制面板呢?我在Github上收集了一些优秀的后台控制面板,并总结得出Top10。1.AdminLTEGithubSta
Wesley13 Wesley13
3年前
Unity 2D角色动画状态切换
一,Idle状态  1,选中角色,打开Animation动画面板;  2,新建一个动画面板Idle;  3,拖动相关角色状态图片,实现动画二,run状态  1,新建一个动画面板run;  2,拖动相关角色状态图片,实现动画三,jump状态  1,新建一个动画面板jump;  2,拖动相关角色状态图片,实现动画四,打开角
Wesley13 Wesley13
3年前
unity3D界面介绍
unity3D的界面并不复杂,界面的布局也可以通过Layout下拉列表进行改变,下面就进行简单的介绍。!(https://oscimg.oschina.net/oscnet/66124cd947c61794b52a200c4e1c31e23ff.png)1、场景面板:上图最左侧上半部分,该面板为Unity3D的编辑面板,用于将所需要的模型
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Photoshop键盘快捷键   操作更方便
使用快捷键快速操作.F1帮助F2剪切F3拷贝F4粘贴F5隐藏/显示画笔面板F6隐藏/显示颜色面板F7隐藏/显示图层面板F8隐藏/显示信息面板F9隐藏/显示动作面板F12恢复ShiftF5填充ShiftF6羽化ShiftF7选择→反选Ctrlh隐藏选定区域Ctrld取消选定区域C
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
美味蟹黄堡 美味蟹黄堡
2年前
如何合理搭建安装宝塔Linux面板
在三艾云vps服务器上如何搭建安装宝塔Linux面板?我们有很多朋友会选择搭建安装宝塔面板建站环境,即便是新手或者是高手,也会趋于使用比较方便管理的面板配置服务器WEB环境。毕竟宝塔面板在操作上效率比较高,以前我们选择LNMP、LAMP等一键安装包的时候主要问题在于市面上的面板安全度不够,而且体验不够友好。这篇文章介绍在不同的镜像中安装宝塔面板。之前看到有网
沸腾的木马 沸腾的木马
1年前
哪吒面板+Nginx Proxy Manager实现多台vps的监控
网络很多都是宝塔面板的文章,2种方法哪吒面板NginxProxyManager实现多台vps的监控占用资源小。当然功能要少的多,只是为了监控vps和反代,这个配套最好。废话多说,开始哪吒面板作者仓库https://github.com/naiba/nez