没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吴园园|2019-12-23 10:19:51.837|阅读 2346 次
概述:您可以在GoJS中构建的图形种类没有限制。但是最常见的一种图形‘树状图’。一棵树是一个图,其中每个节点最多可以有一个“树父节点”,并且最多有一个连接到该父节点的链接,并且图中没有循环。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地简化您的JavaScript / Canvas 程序。
GoJS现已更新至最新版本2.1.3发布,修复了一些bug,增强用户体验,赶快下载试试吧~
手动布置树结构
当然,您可以手动或以编程方式手动定位节点。在此第一个示例中,节点位置存储在节点数据中,并且存在Part.location到节点数据属性的绑定。
diagram.nodeTemplate = $(go.Node, "Auto", new go.Binding("location", "loc", go.Point.parse), $(go.Shape, "Ellipse", { fill: "white" }), $(go.TextBlock, new go.Binding("text", "key")) ); diagram.linkTemplate = $(go.Link, { routing: go.Link.Orthogonal, corner: 5 }, $(go.Shape)); var nodeDataArray = [ { key: "Alpha", loc: "0 60" }, { key: "Beta", loc: "100 15" }, { key: "Gamma", loc: "200 0" }, { key: "Delta", loc: "200 30" }, { key: "Epsilon", loc: "100 90" }, { key: "Zeta", loc: "200 60" }, { key: "Eta", loc: "200 90" }, { key: "Theta", loc: "200 120" } ]; var linkDataArray = [ { from: "Alpha", to: "Beta" }, { from: "Beta", to: "Gamma" }, { from: "Beta", to: "Delta" }, { from: "Alpha", to: "Epsilon" }, { from: "Epsilon", to: "Zeta" }, { from: "Epsilon", to: "Eta" }, { from: "Epsilon", to: "Theta" } ]; diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);
您还可以通过使用TreeModel获得相同的结果。
diagram.nodeTemplate = $(go.Node, "Auto", new go.Binding("location", "loc", go.Point.parse), $(go.Shape, "Ellipse", { fill: "white" }), $(go.TextBlock, new go.Binding("text", "key")) ); diagram.linkTemplate = $(go.Link, { routing: go.Link.Orthogonal, corner: 5 }, $(go.Shape)); var nodeDataArray = [ { key: "Alpha", loc: "0 60" }, { key: "Beta", loc: "100 15", parent: "Alpha" }, { key: "Gamma", loc: "200 0", parent: "Beta" }, { key: "Delta", loc: "200 30", parent: "Beta" }, { key: "Epsilon", loc: "100 90", parent: "Alpha" }, { key: "Zeta", loc: "200 60", parent: "Epsilon" }, { key: "Eta", loc: "200 90", parent: "Epsilon" }, { key: "Theta", loc: "200 120", parent: "Epsilon" } ]; diagram.model = new go.TreeModel(nodeDataArray);
自动TreeLayout
最常见的是使用TreeLayout布置树。刚分配Diagram.layout来的新实例TreeLayout。本示例还定义了setupTree此页面上后续示例中使用的功能。
function setupTree(diagram) { diagram.nodeTemplate = $(go.Node, "Auto", $(go.Shape, "Ellipse", { fill: "white" }), $(go.TextBlock, new go.Binding("text", "key")) ); diagram.linkTemplate = $(go.Link, { routing: go.Link.Orthogonal, corner: 5 }, $(go.Shape)); var nodeDataArray = [ { key: "Alpha" }, { key: "Beta", parent: "Alpha" }, { key: "Gamma", parent: "Beta" }, { key: "Delta", parent: "Beta" }, { key: "Epsilon", parent: "Alpha" }, { key: "Zeta", parent: "Epsilon" }, { key: "Eta", parent: "Epsilon" }, { key: "Theta", parent: "Epsilon" } ]; diagram.model = new go.TreeModel(nodeDataArray); } setupTree(diagram); diagram.layout = $(go.TreeLayout); // automatic tree layout
常见的TreeLayout属性
该TreeLayout.angle属性控制树木生长的大方向。它必须为零(向右),90(向下),180(向左)或270(向上)。
setupTree(diagram); diagram.layout = $(go.TreeLayout,{ angle:90 });
该setupTree功能在上面定义。
TreeLayout.alignment属性控制父节点相对于其子节点 的放置方式。这必须是TreeLayout上定义的Alignment ...常量之一。
setupTree(diagram); diagram.layout = $(go.TreeLayout,{ angle:90,alignment:go.TreeLayout.AlignmentStart});
对于树布局,所有节点均根据来自根节点的链接链的长度放置在“层”中。这些层不应与图层混淆,后者控制节点的Z顺序。该TreeLayout.layerSpacing属性控制紧密层是彼此。所述TreeLayout.nodeSpacing属性控制闭合节点是彼此在相同的层。
setupTree(diagram); diagram.layout = $(go.TreeLayout,{ layerSpacing:20,nodeSpacing:0 });
可以对每个节点的子级进行排序。默认情况下,TreeLayout.comparer函数比较 Part.text属性。因此,如果该属性是由节点模板绑定的数据,并且将TreeLayout.sorting属性设置 为按升序或降序排序,则每个父节点的所有子节点都将按照其文本字符串的顺序进行排序。(在此示例中,这意味着希腊字母的英文名称的字母顺序。)
setupTree(diagram); diagram.nodeTemplate = $(go.Node, "Auto", new go.Binding("text", "key"), // bind Part.text to support sorting $(go.Shape, "Ellipse", { fill: "lightblue" }), $(go.TextBlock, new go.Binding("text", "key")) ); diagram.layout = $(go.TreeLayout, { sorting: go.TreeLayout.SortingAscending });
但是您可以提供自己的功能来订购子级,例如:
$(go.Diagram, . . ., { layout: $(go.TreeLayout, { sorting: go.TreeLayout.SortingAscending, comparer: function(a, b) { // A and B are TreeVertexes var av = a.node.data.index; var bv = b.node.data.index; if (av < bv) return -1; if (av > bv) return 1; return 0; }, . . . }) . . . })
====================================================
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:GoJS在许多企业应用程序中,从 Visio 文件读取形状数据是一项常见需求,因为这些应用程序中的图表都包含有意义的元数据。本教程将借助Aspose.Diagram,以清晰实用的方式指导您使用 C# 读取形状数据。
PDF 的页面大小决定了其内容的显示、打印或处理方式。在准备打印、转换格式或标准化布局时,我们通常需要更改PDF文档的纸张大小。在本教程中,您将学习如何使用 Java 编辑任何 PDF 文件的页面大小。我们将通过完整的代码示例,逐步指导您完成操作。
本文主要介绍如何使用DevExpress WPF Grid控件中的节点(Nodes)概述,欢迎下载最新版组件体验!
本教程提供DevExpress WinFormsWinExplorer视图的基本信息,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号