Cytoscape变焦对齐

时间:2016-08-21 03:21:15

标签: cytoscape.js

当使用鼠标放大或缩小时,我的背景图像与网络图像保持正确对齐存在问题。没有缩放,网络与背景匹配。但是,通过放大,背景向右移动(不对齐)。背景图像与网络保持相同的宽度,仅移位。与缩小相同,但在左侧。

为了让缩放工作到这个程度,我需要调整缩放系数:

cy.on('zoom', function(evt){
var newpct = 135.0 * cy.zoom();
document.getElementById('cy').style.backgroundSize = newpct + '%';                  
});

图片的标题CSS等:

#cy {
    background-image: url("background6.png");
    background-repeat: no-repeat;
    background-size: 100%;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    left: 0px;      
}

图像来自11“x 8.5”MS Publisher文件,保存为PNG

潘正在运作良好,但需要进行调整:

cy.on('pan', function(evt){
var pan = cy.pan();
var x = pan.x - 92;
var y = pan.y - 48;
document.getElementById('cy').style.backgroundPosition = x +'px ' + y + 'px ';
});

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

你必须保持你的坐标同步,这必须完全。如果您通过实验或相对值调整某些比例值和平移偏移,您可能会关闭。

对于缩放,s和平移,t,应用于CSS中的图像,找到常量s0和t0,使

s = zoom * s0t = { x: pan.x + t0.x, y: pan.y + t0.y }

您可以通过在缩放1和平移(0,0)处对齐图像来找到s0和t0。

你无法使用百分数;你应该使用像素(或ems,如果你测量ems中的所有东西)。

答案 1 :(得分:0)

非常感谢您的回答。经过一些工作后,我了解到zoom事件后来触发了pan事件。所以我只在pan事件函数中进行翻译(包括平移和缩放),如下所示:

var ax = -120 * cy.zoom();
var ay = -60 * cy.zoom();
var x = pan.x + ax;
var y = pan.y + ay;
document.getElementById('cy').style.backgroundPosition = x +'px ' + y + 'px ';

现在工作得很好。再次感谢您的支持!