gpt4 book ai didi

javascript - 在 jsPlumb 中实现平移和缩放

转载 作者:行者123 更新时间:2023-11-29 18:02:04 24 4
gpt4 key购买 nike

我正在从事一个涉及使用 *jsPlumb(*社区版)创建流程图的项目。社区版没有内置平移/缩放功能。他的项目不需要付费版(工具包版)提供的所有功能。因此,在付费版上投入大量资金不是一种选择。是否有任何行之有效的方法可以使用社区版完成平移/缩放?

最佳答案

这是一个 example of pan/zoom in jsPlumb Community Editionjquery.panzoom plugin 实现

还使用了 jQueryUI/draggable 和 Dagre。

您需要用将被平移/缩放的 div 包裹您的图表(在此示例中它具有“panzoom”类)

$panzoom = $container.find('.panzoom').panzoom({
minScale: minScale,
maxScale: maxScale,
increment: incScale,
cursor: "",
});

jQueryUI 用于拖动节点而不是内置可拖动节点,以补偿全景缩放比例和双偏移问题。拖动节点时禁用平移并考虑比例因子:

var currentScale = 1;
$container.find(".diagram .item").draggable({
start: function(e){
var pz = $container.find(".panzoom");
currentScale = pz.panzoom("getMatrix")[0];
$(this).css("cursor","move");
pz.panzoom("disable");
},
drag:function(e,ui){
ui.position.left = ui.position.left/currentScale;
ui.position.top = ui.position.top/currentScale;
if($(this).hasClass("jsplumb-connected"))
{
plumb.repaint($(this).attr('id'),ui.position);
}
},
stop: function(e,ui){
var nodeId = $(this).attr('id');
if($(this).hasClass("jsplumb-connected"))
{
plumb.repaint(nodeId,ui.position);
}
$(this).css("cursor","");
$container.find(".panzoom").panzoom("enable");
}
});

关于javascript - 在 jsPlumb 中实现平移和缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com