mxgraph 根据鼠标位置缩放视图
时间: 2023-10-11 13:08:22 浏览: 228
app.rar_DEMO_mxgraph_mxgraph demo
可以通过监听鼠标滚轮事件,根据鼠标位置缩放视图。具体的做法是在 mxGraph 的初始化代码中,为 graphComponent 添加鼠标滚轮事件的监听器,然后在事件处理函数中,根据鼠标位置计算出缩放比例,再调用 mxGraph 的 zoom 方法实现缩放。例如:
```
var graph = new mxGraph(container);
var graphComponent = new mxGraphComponent(graph);
mxEvent.addListener(graphComponent.container, 'mousewheel', function(evt) {
if (evt.wheelDelta != 0) {
var zoomFactor = 1.1; // 缩放因子
var pt = mxUtils.convertPoint(graphComponent.container, evt.clientX, evt.clientY);
var zoom = graph.view.scale * ((evt.wheelDelta > 0) ? zoomFactor : 1 / zoomFactor);
graph.zoomTo(zoom, true); // 缩放视图
var dx = (pt.x - graphComponent.container.clientWidth / 2) * (zoom - 1);
var dy = (pt.y - graphComponent.container.clientHeight / 2) * (zoom - 1);
graphComponent.container.scrollLeft += dx; // 滚动视图
graphComponent.container.scrollTop += dy;
mxEvent.consume(evt); // 阻止默认滚动事件
}
});
```
上述代码中,zoomFactor 是缩放因子,pt 是鼠标位置,zoom 是缩放比例,dx 和 dy 是滚动视图时需要的偏移量。在缩放视图后,需要根据鼠标位置和缩放比例计算出偏移量,然后将偏移量应用到视图的滚动条上,以保证缩放后的视图中心点位置不变。最后,调用 mxEvent.consume(evt) 阻止默认的滚动事件。
阅读全文