根据设置的不同属性, Node可以显示为shape(形状)/image(图标)/path(路径)/heatmap(热力图), 默认为形状节点
大部分属性既可以在Node上设置, 也可以在GView上设置全局属性, 一般情况下, 全局属性名是由node_前缀加属性名组成, Node上属性的优先级高于GView上的全局属性
有如下可选项:
如果没有明确设置type, 通过以下逻辑进行依次判断
一般不需要设置type属性, 通过属性进行逻辑判断即可
x和y可以分别设置, 也可以通过setPosition/setCenter方法进行设置
node.set("x", 100);
node.set("y", 200);
node.set({x: 100, y: 200});
node.setPosition(100, 200); //设置左上角坐标
node.setPosition({x: 100, y: 200});
node.setCenter(100, 100); //设置中心坐标
node.setCenter({x: 100, y: 100});
width和height可以分别设置, 也可以通过setSize方法进行设置
node.set("width", 100);
node.set("height", 60);
node.set({width: 100, height: 60});
node.setSize(100, 60);
node.setSize({width: 100, height: 60});
默认情况, 名字会显示为Label标签, 可以通过设置view的label_field属性指定Label标签的属性字段, 示例代码
node.set("name", "Hello World!!");
可以通过URL指定图标路径, 图标可以是PNG/SVG/JPG等格式, 也可以使用Base64字符串
// url svg
node.set("image", "../_icons/format/svg.svg");
// url png
node.set("image", "../_icons/format/png.png");
// base64
node.set("image", "data:image/svg+xml;base64,PHN2ZyB3aW...");
//Register and use by name.
// url
z.util.image.register("patent", "../_icons/paper/patent.svg");
// img
z.util.image.register("press", z.dom.query("#iconImg"));
// base64
z.util.image.register("book", "data:image/svg+xml;base64,PD94bWw...");
node.set("image", "patent"); // image name
node.set("image", "press");
node.set("image", "book");
node.set("image_color", "red");
仅对image类型Node有效
有如下可选项:
node.set("shape","start");
gView.set("node_shape","cloud"); // 全局设置
仅对形状类型Node有效
圆角矩形由4个角, 所以半径可以为数字, 也可以为数组
请注意, 圆弧半径的长度不得大于width/2和height/2
node.set("roundrect_radius", 0.5);
gView.set("node_roundrect_radius", 20);//全局设置
仅对圆角矩形形状的Node有效
默认两个点通过lineTo(直线)的方式相连, 可以通过点的seg属性设置到下一个点的连接方式, 有如下可选项
请注意, 这里的seg指定的是当前点到下一个点的连接方式, 而不是当前点的
//直线
node.set("points", [
{x: 100, y: 80},
{x: 300, y: 80}
]);
//二次贝塞尔曲线
node.set("points", [
{x: 100, y: 340, seg: "quadratic_curve_to"}, //曲线起点
{x: 200, y: 260}, //控制点
{x: 300, y: 340} //曲线终点
]);
//三次贝塞尔曲线
node.set("points", [
{x: 400, y: 290, seg: "bezier_curve_to"}, //曲线起点
{x: 500, y: 260}, //第1个控制点
{x: 500, y: 360}, //第2个控制点
{x: 600, y: 330} //曲线终点
]);
//关闭
node.set("points", [
{x: 100, y: 100},
{x: 200, y: 200},
{x: 300, y: 300} //关闭路径
]);
仅对路径类型Node有效
旋转的中心点为节点body矩形的中心点, Node的body矩形区域不包括label标签和info提示等
node.set("rotation", 180);
设置了host的节点称为follow节点, 会随着host节点的移动而移动
node.set("host", hostNode);
填充相关样式设置, 请参考填充样式
请参考填充和画笔样式#fill
node.set("fill","LightSkyBlue"); //Name
node.set("fill","#008080"); //HEX
node.set("fill","rgb(105, 105, 105)"); //RGB
node.set("fill","rgba(154, 205, 50, 0.8)"); //RGBA
gView.set("node_fill","#008080"); //全局设置
node.set("fill","linear_gradient");
gView.set("node_fill","linear_gradient"); //全局设置
node.set("fill","radial_gradient");
gView.set("node_fill","radial_gradient"); //全局设置
node.set("fill","pattern");
gView.set("node_fill","pattern"); //全局设置
仅对形状&路径类型Node有效
请参考填充和画笔样式#fill_gradient_direction
node.set("fill_gradient_direction","lt_to_rb");
gView.set("node_fill_gradient_direction","t_to_b"); // 全局设置
仅对形状&路径类型Node有效
请参考填充和画笔样式#fill_gradient_colors
node.set("fill_gradient_colors", {
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
gView.set("node_fill_gradient_colors", { //全局设置
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
仅对形状&路径类型Node有效
属性值可以是注册的图片, 也可以是img对象, 请参考填充和画笔样式#fill_pattern_image
node.set("fill_pattern_image", "windmill");
gView.set("node_fill_pattern_image", "windmill"); //全局设置
仅对形状&路径类型Node有效
画笔相关样式设置, 请参考画笔样式
node.set("stroke","LightSkyBlue"); //Name
node.set("stroke","#008080"); //HEX
node.set("stroke","rgb(105, 105, 105)"); //RGB
node.set("stroke","rgba(154, 205, 50, 0.8)"); //RGBA
gView.set("node_stroke","#008080"); //全局设置
node.set("stroke","linear_gradient");
gView.set("node_stroke","linear_gradient"); //全局设置
node.set("stroke","radial_gradient");
gView.set("node_stroke","radial_gradient"); //全局设置
仅对形状&路径类型Node有效
请参考填充和画笔样式#stroke_gradient_direction
node.set("stroke_gradient_direction","lt_to_rb");
gView.set("node_stroke_gradient_direction","t_to_b"); // 全局设置
仅对形状&路径类型Node有效
请参考填充和画笔样式#stroke_gradient_colors
node.set("stroke_gradient_colors", {
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
gView.set("node_stroke_gradient_colors", {
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
仅对形状&路径类型Node有效
node.set("stroke_line_width", 2);
gView.set("node_stroke_line_width", 2); //全局设置
仅对形状&路径类型Node有效
node.set("stroke_line_dash", [6, 3]);
gView.set("node_stroke_line_dash", [3, 2]); //全局设置
仅对形状&路径类型Node有效
请参考填充和画笔样式#stroke_line_dash_offset
node.set("stroke_line_dash_offset", 10);
gView.set("node_stroke_line_dash_offset", 10); //全局设置
仅对形状&路径类型Node有效
箭头相关样式设置, 请参考箭头样式文档
node.set("begin_arrow_shape", "arrow");
node.set("end_arrow_shape", "stealth_arrow");
gView.set("node_begin_arrow_shape", "open_arrow"); //全局设置
gView.set("node_end_arrow_shape", "open_arrow"); //全局设置
仅对路径类型Node有效
node.set("begin_arrow_size", 3);
node.set("end_arrow_size", 6);
gView.set("node_begin_arrow_size", 8); //全局设置
gView.set("node_end_arrow_size", 8); //全局设置
仅对路径类型Node有效
node.set("begin_arrow_offset", 3);
node.set("end_arrow_size", 0.5); //50%
gView.set("node_begin_arrow_size", 8); //全局设置
gView.set("node_end_arrow_size", 8); //全局设置
仅对路径类型Node有效
node.set("begin_arrow_fill","LightSkyBlue"); //Name
node.set("begin_arrow_fill","#008080"); //HEX
node.set("end_arrow_fill","rgb(105, 105, 105)"); //RGB
node.set("end_arrow_fill","rgba(154, 205, 50, 0.8)"); //RGBA
gView.set("node_begin_arrow_fill", "Green"); //全局设置
gView.set("node_end_arrow_fill", "Orange"); //全局设置
仅对路径类型Node有效
node.set("begin_arrow_stroke","LightSkyBlue"); //Name
node.set("end_arrow_stroke","#008080"); //HEX
gView.set("node_begin_arrow_stroke","rgb(105, 105, 105)"); //全局设置
gView.set("node_end_arrow_stroke","rgba(154, 205, 50, 0.8)"); //全局设置
仅对路径类型Node有效
请参考箭头样式#arrow-stroke-line-width
node.set("begin_arrow_stroke_line_width", 2); //Name
node.set("end_arrow_stroke_line_width", 3); //HEX
gView.set("node_begin_arrow_stroke_line_width", 2); //全局设置
gView.set("node_end_arrow_stroke_line_width", 3); //全局设置
文本相关属性设置, 请参考文本样式
有如下可选项
node.set("label_position", "center");
gView.set("label_position", "bottom");
有如下可选项
如果没有指定label_direction, 会根据label_position自动生成label_direction方向
node.set("label_direction", "left");
gView.set("label_direction", "right");
如果设置了外边框的stroke相关属性, 外边框始终可见, 而选中状态边框只有选中时才可见
node.set("outline_padding", 2);
gView.set("outline_padding", 3); //全局设置
更多画笔样式, 请参考填充和画笔样式#stroke(通常设置为颜色)
node.set("outline_stroke","LightSkyBlue"); //颜色
node.set("outline_stroke", "linear_gradient"); //渐变类型
node.set("outline_stroke_gradient_direction", "lt_to_rb"); //渐变方向
node.set("outline_stroke_gradient_colors", { //渐变颜色
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
gView.set("outline_stroke","LightSkyBlue"); //全局设置
渐变颜色由百分比位置(0-1)和颜色组成,请参考填充和画笔样式#stroke_gradient_direction
node.set("outline_stroke_gradient_direction", "lt_to_rb");
gView.set("outline_stroke_gradient_direction", "lt_to_rb"); //全局设置
渐变颜色由百分比位置(0-1)和颜色组成,请参考填充和画笔样式#stroke_gradient_colors
node.set("outline_stroke_gradient_colors", {
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
gView.set("outline_stroke_gradient_colors", { //全局设置
0: "black", //起始颜色为black
0.5: "red", //中间50%位置的颜色为red
1: "white" //结束颜色为white
});
node.set("outline_stroke_line_width", 2);
gView.set("outline_stroke_line_width", 2); //全局设置
node.set("outline_stroke_line_dash", [6, 3]);
gView.set("outline_stroke_line_dash", [6, 3]); //全局设置
请参考填充和画笔样式#stroke_line_dash_offset
node.set("outline_stroke_line_dash_offset", 2);
gView.set("outline_stroke_line_dash_offset", 2); //全局设置
交互相关属性设置, 请参考交互状态样式
节点上还包括一些控制(可见/可选/禁用/...)相关的属性, 这些控制属性既可以在节点上进行设置, 也可以通过在GView上设置全局控制属性、重写回调函数或添加过滤器(filter)的方式实现
node.set("visible", false);
node.set("selectable", false);
gView.set("selectable", false); //全局设置
node.set("hoverable", true);
gView.set("hoverable", true); //全局设置
node.set("movable", false);
gView.set("movable", false); //全局设置
node.set("disabled", true);
gView.set("disabled", true); //全局设置
node.setPosition({x: 100, y: 100}); //object
node.setPosition([100, 100]); //array
node.setPosition(200, 200); //x,y
node.getPosition(); //{x:100,y:100}
node.setCenter({x: 100, y: 100}); //object
node.setCenter([200, 200]); //array
node.setCenter(200, 200); //x,y
node.getCenter(); //{x:100,y:100}
node.setSize({width: 100, height: 100}); //object
node.setSize([100, 100]); //array
node.setSize(100, 100); //width,height
node.getSize(); //{width:100, height:100}