美文网首页
11 - 画布滚动,滚轮缩放,小地图

11 - 画布滚动,滚轮缩放,小地图

作者: skoll | 来源:发表于2022-06-01 10:51 被阅读0次

简介

1 .使画面具备滚动,平移,居中,缩放等能力,这些都必须是scroller之后才会有的效果

scroller:{
                  enabled:true,
                  pannable:{
                      enabled:true,
                      eventTypes:['rightMouseDown','leftMouseDown'],
                      //决定了左键和右键都可以拖
                  },
                  modifiers:['alt'],
                  //在之前的基础上,必须有alt才能拖动
autoResize:true,
//是否自动缩放
              }

2 .

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/@antv/x6/dist/x6.js"></script>
    <style>
        .snapline-prefix-cls {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            pointer-events: none;
        }
    </style>
</head>
<body>
    <div id="container">

    </div>
    <button id="copy">复制</button>   
    <button id="paste">粘贴</button>
    <button id="cut">剪切</button> 
    <button id="undo">回退</button>  
    <button id="redo">前进</button>
    <script>
        const copy=document.querySelector('#copy')
        const paste=document.querySelector('#paste')
        const cut=document.querySelector('#cut')
        const undo=document.querySelector('#undo')
        const redo=document.querySelector('#redo')

        const graph=new X6.Graph({
            container:document.getElementById('container'),
            width:800,
            height:600,
            background:{
                color:'#fffbe6',
            },
            scroller:{
                enabled:true,
                className:'my-csroller',
                //附加样式名,用于定义样式,默认为undefined
                width:500,
                height:300,
                //画布的宽度和高度,这里是除了上面的,自己这边还能加
                pannable:{
                    enabled:true,
                    eventTypes:['leftMouseDown','rightMouseDown']
                    //支持左键和右键平移
                },
                //空白地方启用画布平移能力
                modifiers:'ctrl',
                //修饰键,现在必须ctrl+左键才会
                cursor:"grab",
                //鼠标样式
                padding:20,
                //画布四周的padding边距.保证画布在滚动时,在宽度和高度方向至少有minVisibleWidth和minVisibleHeight大小的画布可见
                pageVisible:true,
                //是否分页
                pageBreak:true,
                pageHeight:150,
            }
            
            
        })
        const rectA=graph.addNode({
            x:60,
            y:50,
            width:180,
            height:100,
            label:"default",
        })


       const rectB= graph.addNode({
            x:160,
            y:200,
            width:100,
            height:50,
            label:"Rect with Ports",  
        })

        
    </script>
</body>
</html>

2 .然后就是一堆移动视图的方法,把某个点,某个矩形移动到

1 .之前用scrollBetter,仅仅有一个移动到某个位置scrollTo()这种的
2 .https://x6.antv.vision/zh/docs/tutorial/basic/scroller#cursor
3 .目前用过的只有画布到中间,某个节点到中间.用于在动画的时候聚焦节点
4 .graph.scrollToPoint(x?: number, y?: number, options?: ScrollOptions) 将某个点滚动到视野中间
5 .graph.scrollToContent(options?: ScrollOptions) 使画布的内容中心滚动到视口中间
6 .graph.scrollToCell(cell: Cell, options?: ScrollOptions) 滚动画布,使节点/边的中心位于画布的视口中心。
7 .centerCell(options?: CenterOptions) 将节点/边的中心与视口中心对齐。如果不能通过滚动来对齐,则自动为 Scroller 的容器增加一定的 padding 边距来强制对齐 
8 .老实说.这么多看着差不多的,有点不知道区别是什么..

滚轮缩放

1 .鼠标滚轮的默认行为是滚动页面,启用Scroller后用域滚动画布 ,某些情况下我们需要用滚轮来缩放画布,为了避免交互冲突,通常配合修饰符来实现滚轮缩放画布
2 .滚轮主要是用来缩放操作

mousewheel:{
  enabled:true,
  modifiers:['ctrl','meta'],
  global:true,
//是否是全局事件
factor:1.1,

}

小地图

1 .小地图是完整画布的预览,支持通过平移缩放小地图的视口来平移缩放画布,需要搭配scroller使用
2 .

全部代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/@antv/x6/dist/x6.js"></script>
    <style>
        .snapline-prefix-cls {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            pointer-events: none;
        }
    </style>
</head>
<body>
    <div id="container">

    </div>
    <div id="mini-container">

    </div>
    <button id="copy">复制</button>   
    <button id="paste">粘贴</button>
    <button id="cut">剪切</button> 
    <button id="undo">回退</button>  
    <button id="redo">前进</button>
    <script>
        const copy=document.querySelector('#copy')
        const paste=document.querySelector('#paste')
        const cut=document.querySelector('#cut')
        const undo=document.querySelector('#undo')
        const redo=document.querySelector('#redo')

        const graph=new X6.Graph({
            container:document.getElementById('container'),
            width:800,
            height:600,
            background:{
                color:'#fffbe6',
            },
            scroller:{
                enabled:true,
                className:'my-csroller',
                //附加样式名,用于定义样式,默认为undefined
                width:500,
                height:300,
                //画布的宽度和高度,这里是除了上面的,自己这边还能加
                pannable:{
                    enabled:true,
                    eventTypes:['leftMouseDown','rightMouseDown']
                    //支持左键和右键平移
                },
                //空白地方启用画布平移能力
                modifiers:'alt',
                //修饰键,现在必须ctrl+左键才会
                cursor:"grab",
                //鼠标样式
                padding:20,
                //画布四周的padding边距.保证画布在滚动时,在宽度和高度方向至少有minVisibleWidth和minVisibleHeight大小的画布可见
                pageVisible:true,
                //是否分页
                pageBreak:true,
                pageHeight:150,
            },
            mousewheel:{
                enabled:true,
                modifiers:['alt'],
                global:true,
                //是否为全局事件:如果是全局事件,就绑定在document上面,否则绑定在画布容器上
                factor:1,
                //缩放比例
                minScale:0.5,
                //最小缩放比
                maxScale:2,
                zoomAtMousePosition:true,
                //是否见鼠标作为位置中心进行缩放
              modifiers:'alt|ctrl&shift'
//同时按下alt+shift,或者ctrl+shift
            },
            minimap:{
                enabled:true,
                container:document.getElementById('mini-container'),
                width:100,
                height:100,
                scalable:false,
                //小地图是否可以缩放
                minScale:0.1,
                //最小缩放比
                maxScale:2,
                //最大缩放比
                graphOptions:{
                    //自定义小地图的Graph的选项
                    async:true,
                    getCellView(cell){
                        if(cell.isNode){
                            return SimpleNodeView
                        }
                    },
                    createCellView(cell){
                        if(cell.isEdge){
                            return cell
                        }
                    }
                }
            }
            
            
        })
        const rectA=graph.addNode({
            x:60,
            y:50,
            width:180,
            height:100,
            label:"default",
        })


       const rectB= graph.addNode({
            x:160,
            y:200,
            width:100,
            height:50,
            label:"Rect with Ports",  
        })

        
    </script>
</body>
</html>

相关文章

  • 11 - 画布滚动,滚轮缩放,小地图

    简介 1 .使画面具备滚动,平移,居中,缩放等能力,这些都必须是scroller之后才会有的效果 2 . 2 .然...

  • Vite + Vue3 + OpenLayers 手动控制缩放级

    一、本文简介 除了用鼠标滚轮在地图上缩放外,还可以使用 ol 提供的 api 设置地图缩放级别。 获取当前缩放级别...

  • PS学习记录

    ctrl+n 创建新画板 alt+滚轮 画面大小缩放 ctrl+滚轮 左右移动+shift 滚动加速 空格键 切换...

  • 基本操作

    一、画布操作 1. 放大缩小画布:alt+鼠标滚轮 或 ctrl+加减键 或 缩放工具(alt切换为缩小) 或 打...

  • Vite + Vue3 + OpenLayers 手动激活地图

    一、需求说明 开发中遇到一种需求: 需要展示地图,但默认不影响页面滚动。 点击地图后,在地图上方滚动鼠标滚轮可以缩...

  • Fabric.js 缩放画布

    本文简介 点赞 + 关注 + 收藏 = 学会了 使用 canvas 开发的项目,滚轮缩放画布的需求应该不算少数,比...

  • JS实例-事件对象2

    鼠标滚轮滚动: 鼠标滚轮事件:在页面滚动鼠标滚轮弹出1:onmousewheel -> 当滚动鼠标的滚轮的时候兼容...

  • PS基本操作及快捷键记录(一)

    一、画布操作: 1.放大缩小画布:alt+鼠标滚轮 或 ctrl+加减键 或缩放工具(alt缩小) 2.百分之百显...

  • js实现浏览器滚动缩放功能

    要想实现通过鼠标滚轮滚动,缩放页面中的指定元素,主要是通过css3中的 transform: scale() 来实...

  • PS--关于快捷放大缩小图层界面。

    1.按住ALT键不放,滚动鼠标滑轮; 2.一劳永逸法:“CTRL + K“——"常规"——勾选“用滚轮缩放”——右...

网友评论

      本文标题:11 - 画布滚动,滚轮缩放,小地图

      本文链接:https://www.haomeiwen.com/subject/qcbnzltx.html