javascript - svg中的鼠标滚轮缩放效果-移动到中心点并在到达极限时停止缩放

标签 javascript jquery svg svg-edit

svg 中的鼠标滚轮缩放效果 - 如何缩放到工作区域的中心点,以及如何在达到最小和最大缩放级别时停止缩放级别。在哪里设置最小和最大缩放值?

下面是我的代码,我在 zoomChanged 中重置了缩放级别svgedit.compiled.js的功能

           if (zoomlevel < 0.4) {                   
                 //changeZoom({value: 0.4});
                 var zoomlevel = 0.4;
                return;
            }

             if (zoomlevel > 9.5) {                 
                // changeZoom({value: 9.5});    
                var zoomlevel = 9.5;                    
                return;
            } 

以及ext-grid.js我已经放置了以下代码

zoomChanged: function(zoom) {
        if (showGrid)
        {           
            if(zoom > 0.4 & zoom < 9.5)
            {
                updateGrid(zoom);
            }           
        }
    },

当鼠标滚轮滚动到0.4或9.5时,网格停止缩放,但缩放级别仍然变化,并缩放到鼠标放置的点。

我需要工作区域应该缩放到中心,无论鼠标放在哪里,当它到达 minimum 0.4 时或maximum 9.5应停止缩放。

谁能指导我,我哪里出了问题?

最佳答案

在 svg-editor.js 文件中有这个函数:

var zoomChanged = svgCanvas.zoomChanged = function(win, bbox, autoCenter)

如果将 autoCenter 变量设置为 true,您可以强制缩放到工作区域的中心。所以:

var zoomChanged = svgCanvas.zoomChanged = function(win, bbox, autoCenter) {
    autoCenter = true;
    var scrbar = 15,
    ....

要限制缩放级别,请打开 svgcanvas.js 并搜索:

this.setZoom = function(zoomlevel)

您可以在此处设置最小/最大缩放级别。 例如,如果您希望允许最小值为 100%,最大值为 400%,您可以编写:

this.setZoom = function(zoomlevel) {
    if (zoomlevel<1) zoomlevel=1;
    if (zoomlevel>4) zoomlevel=4;
...

关于javascript - svg中的鼠标滚轮缩放效果-移动到中心点并在到达极限时停止缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24609467/

相关文章:

javascript - angularjs 如何在html中转义 “${variable}”?

jquery - 添加新的 div 效果 jquery

javascript - 如何替换某个字母中的所有内容?

javascript - 如何使 "ng-"与任何属性一起使用?

javascript - AJAX 到 Controller 密码确认

javascript - 从对象数组中获取值

javascript - JQuery 源代码 - 绝对不可读?

css - 在不使用 flexbox 或绝对位置的情况下,将 span 与内联 svg 居中对齐

javascript,d3 将 svg 保存为 png 丢失颜色和字体

javascript - 将 OpenLayers map 作为 SVG foreignObject 嵌入会导致 map 出现在所有其他 SVG 元素之上,而不管 SVG 元素顺序如何